我在Weblogic 12c中配置了一个DataSource,如下图所示:
我在使用此数据源的同一Weblogic服务器上也有一个Web应用程序:
每当我从头开始创建Weblogic时,一切正常。但是,在它启动之后,如果我尝试关闭webapplication然后再次启动它,我有一个“javax.naming.NameNotFoundException”,如下所示:
这是我用来获取数据源的代码:
@Bean
public DataSource dataSource() {
final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
dsLookup.setResourceRef(true);
DataSource dataSource = dsLookup.getDataSource("jdbc/xdrstoredbds");
return dataSource;
}
我可能缺少什么?
答案 0 :(得分:2)
结束问题的原因是我不知道的Spring行为。正如在其他答案Weblogic datasource disappears from JNDI tree中所提到的,我必须在我的bean定义中添加destroyMethod =“”。没有它,似乎是春天
“试图确定破坏方法是什么。这显然是 导致数据源关闭并删除JNDI密钥 从树上。将其更改为“”会强制它不寻找 了destroyMethod“。
我的方法最终看起来与我提到的答案中的那个相似:
@Bean(destroyMethod = "")
public DataSource dataSource() {
final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
dsLookup.setResourceRef(true);
return dsLookup.getDataSource("jdbc/xdrstoredbds");
}
答案 1 :(得分:0)
替换你的行
DataSource dataSource = dsLookup.getDataSource("jdbc/xdrstoredbds");
与
DataSource dataSource = dsLookup.getDataSource("java:comp/env/jdbc/xdrstoredbds");
然后尝试再次进入。
java:comp / env是JNDI树中的节点,您可以在其中找到当前Java EE组件的属性