问题介绍:在weblogic中有时重启项目或启动项目会报错:Unable to resolve 'dataSource'. Resolved ''; remaining name 'dataSource',但是重启weblogic服务可以正常启动项目,项目使用spring框架
解决方案:
- 重启weblogic正常启动项目后查看JNDI树,然后关闭项目观察项目使用的数据源是否从JNDI树中消失,查看JNDI树方法(以12C为例):
- 项目重启时数据源消失是因为,通过代码获取数据源链接时,没有配置对象删除方法,应用关闭时就会删除数据源,可以在@Bean注解中添加destroyMethod 属性,如果是多数据源项目,每个数据源都要设置,如下所示:
@Bean(destroyMethod = "")
public DataSource dataSource() {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
DataSource dataSource = dataSourceLookup.getDataSource("dataSource");
return dataSource;
}
如果是xml,配置如下:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="dataSource" />
<property name="destroyMethodName" value="" />
</bean>