java - Spring引导多个jndi连接
问题描述
请以我的英语为基础,我正在使用spring boot 2并使用tomcat注册3个jndi连接,如下所示:
@Bean
public TomcatServletWebServerFactory tomcatFactory() {
return new TomcatServletWebServerFactory() {
@Override
protected TomcatWebServer getTomcatWebServer(org.apache.catalina.startup.Tomcat tomcat) {
tomcat.enableNaming();
return super.getTomcatWebServer(tomcat);
}
@Override
protected void postProcessContext(Context context) {
//Jndi connection 1
ContextResource resource = new ContextResource();
resource.setName("jdbc/masterTable");
resource.setType(DataSource.class.getName());
resource.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver");
resource.setProperty("url", "jdbc:oracle:thin:@localhost:1521/xe");
resource.setProperty("username", "root");
resource.setProperty("password", "root");
//Jndi connection 2
context.getNamingResources().addResource(resource);
resource = new ContextResource();
resource.setName("jdbc/SampleData");
resource.setType(DataSource.class.getName());
resource.setProperty("driverClassName", "org.hsqldb.jdbcDriver");
resource.setProperty("url", "jdbc:hsqldb:hsql://localhost:9001/sampledata");
resource.setProperty("username", "pentaho_user");
resource.setProperty("password", "password");
context.getNamingResources().addResource(resource);
}
};
现在在使用时显示错误:javax.naming.NameNotFoundException: Name [java:comp/env/jdbc/SampleData] is not bound in this Context。找不到 [jdbc]。
为什么会这样?
解决方案
为 resource2 创建另一个上下文:ContextResource resource2 = new ContextResource();
然后在 conext 中添加资源 2 context.getNamingResources().addResource(resource2);
您正在使用与第一个相同的上下文资源..
//Jndi connection 2
ContextResource resource2 = new ContextResource();
resource2.setName("jdbc/SampleData");
resource2.setType(DataSource.class.getName());
resource2.setProperty("driverClassName", "org.hsqldb.jdbcDriver");
resource2.setProperty("url", "jdbc:hsqldb:hsql://localhost:9001/sampledata");
resource2.setProperty("username", "pentaho_user");
resource2.setProperty("password", "password");
context.getNamingResources().addResource(resource2);
推荐阅读
- c# - 桌面应用程序图标上的屏蔽图像
- xml - 传递 XML 时提供的 XML 格式不正确
- mysql - 我的 SQL 安装在 `Program Files` 中,但看不到 `my.ini` 文件
- javascript - 在 Javascript 中使用 Set 删除重复项
- objective-c - 图像在 UITableView 中重叠如何解决这个问题?
- groovy - 如何在 groovy xmlslurper 中检查标签是否包含值或子标签?
- vba - 函数 SUM vba
- java - 将摇动应用程序作为项目的短信
- java - 如何在 spring-boot-2 中添加 WebRequestTraceFilter?
- python - Python 请求 - Put 忽略文件上传