Spring data jpa 无法使用Spring数据JPA通过JNDI名称访问Weblogic数据源

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

我使用的是Weblogic 12c,我的数据源配置如下:

    @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因为我离开了那个有问题的公司,我不知道问题是否解决了,对不起。