Java Spring引导多个jndi连接
请以我的英语为基础,我正在使用spring boot 2并在tomcat上注册3 jndi连接,如下所示:Java Spring引导多个jndi连接,java,spring,spring-boot,Java,Spring,Spring Boot,请以我的英语为基础,我正在使用spring boot 2并在tomcat上注册3 jndi连接,如下所示: @Bean public TomcatServletWebServerFactory tomcatFactory() { return new TomcatServletWebServerFactory() { @Override protected TomcatWebServer getTomcatWebServer(org.apache.cat
@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]未在此上下文中绑定。找不到[jdbc]
为什么会发生这种情况?为resource2创建另一个上下文:
ContextResource2=new ContextResource()
然后在conextcontext.getNamingResources().addResource(resource2)中添加资源2代码>
您正在使用与first.相同的上下文资源
//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);
你能试试oracle url:jdbc:oracle:thin:@localhost:1521:xe@kj007我不认为连接url有任何问题。这是与上下文相关的内容或其他内容。似乎您正在尝试使用相同的上下文配置多个资源,请为hsqldb创建另一个上下文。我认为ContextResource2=new ContextResource();但每次resource=new ContextResource()时,我都在创建新对象;因为对象是可变的,所以它将覆盖相同的。需要创建ContextResource的新实例。此更改后它是否不工作??