Spring data jpa 无法使用Spring数据JPA通过JNDI名称访问Weblogic数据源
我使用的是Weblogic 12c,我的数据源配置如下:Spring data jpa 无法使用Spring数据JPA通过JNDI名称访问Weblogic数据源,spring-data-jpa,weblogic,datasource,jndi,weblogic12c,Spring Data Jpa,Weblogic,Datasource,Jndi,Weblogic12c,我使用的是Weblogic 12c,我的数据源配置如下: @Bean @Primary public DataSource businessDataSource() throws IllegalArgumentException, NamingException { JndiObjectFactoryBean dataSource = new JndiObjectFactoryBean(); dataSource.setResourceRe
@Bean
@Primary
public DataSource businessDataSource() throws IllegalArgumentException, NamingException {
JndiObjectFactoryBean dataSource = new JndiObjectFactoryBean();
dataSource.setResourceRef(true);
dataSource.setJndiName("MYDS");
dataSource.afterPropertiesSet();
return (DataSource) dataSource.getObject();
}
请注意,它们都部署在目标“AdminServer”上。此外,“Name”字段和“JNDI Name”字段是相同的。例如,假设一个数据源的名称是“MYDS”
现在,当我尝试通过Spring Data JPA获取该数据源时,如下所示:
@Bean
@Primary
public DataSource businessDataSource() throws IllegalArgumentException, NamingException {
JndiObjectFactoryBean dataSource = new JndiObjectFactoryBean();
dataSource.setResourceRef(true);
dataSource.setJndiName("MYDS");
dataSource.afterPropertiesSet();
return (DataSource) dataSource.getObject();
}
尝试将war文件部署到weblogic时,出现以下错误:
通过工厂方法实例化Bean失败;嵌套异常是
org.springframework.beans.BeanInstantiationException:未能
实例化[javax.sql.DataSource]:工厂方法
“businessDataSource”引发异常;嵌套异常是
javax.naming.NameNotFoundException:无法解析“MYDS”。断然的
''; 剩余名称“MYDS”
我还看到这个错误:
调试o.s.jndi.JndiObjectFactoryBean-转换的jndi名称
未找到[java:comp/env/MYDS]-正在尝试原始名称[MYDS]。
javax.naming.NameNotFoundException:尝试查找时
comp/env/MYDS在/app/myapp/webclient/404708050中。;剩余名称
“公司/环境/MYDS”
只需查看setResourceRef的源代码,它说明: public void setResourceRef(布尔resourceRef) 设置查找是否发生在Java EE容器中 i、 e.如果JNDI名称尚未包含前缀“java:comp/env/”,则需要添加前缀。 默认值为“false” 注意:只有在没有给出其他方案(例如“java:”)时才会应用
如果将其设置为true,您是否尝试将java:comp/env/添加到JNDI名称中?您的问题解决了吗?怎么做?@AmirPashazadeh因为我离开了那个有问题的公司,我不知道问题是否解决了,对不起。