WebLogic无法解析jndi数据源

时间:2018-03-02 08:25:48

标签: java weblogic datasource jndi

我有应用程序从WebLogic通过jndi名称获取数据源。

JndiObjectFactoryBean jndiFactory = new JndiObjectFactoryBean();
jndiFactory.setJndiName(currentDSSettings.getJndi());
jndiFactory.setResourceRef(true);
jndiFactory.setProxyInterface(DataSource.class);
jndiFactory.setLookupOnStartup(false);
jndiFactory.afterPropertiesSet();
datasource = (DataSource) jndiFactory.getObject();

我在application.yml中配置了jndi数据源名称:

spring:
  profiles.active: development

---
spring:
  profiles: production
datasources:
   -  dbName : myDataSource
      driverClass:
      url:
      jndi: RCDB-SMS-JNDI
      db:
      server:
      user:
      password:

我在WebLogic服务器上配置了它,指定了特定的目标。我测试了这个数据源,WebLogic说测试成功了。但是当我尝试部署应用程序时,我收到以下错误:

javax.naming.NameNotFoundException: Unable to resolve 'RCDB-SMS-JNDI'. Resolved ''; remaining name 'RCDB-SMS-JNDI'

我需要确定WebLogic的数据源配置是否存在问题,或者在我的java代码中获取数据源时出现问题。我能否在不部署应用程序的情况下测试获取数据源?

1 个答案:

答案 0 :(得分:0)

似乎你应该在JndiName前面添加一个路径。尝试根据路径定义将代码替换为以下代码:

JndiObjectFactoryBean jndiFactory = new JndiObjectFactoryBean();
jndiFactory.setJndiName("java:comp/env/" + env.getProperty("sta.datasource.name", "jdbc/mySpace"));
jndiFactory.setResourceRef(true);
jndiFactory.setProxyInterface(DataSource.class);
jndiFactory.setLookupOnStartup(false);
try {
    jndiFactory.afterPropertiesSet();
} catch (IllegalArgumentException | NamingException e) {
    throw new SQLException("Datasource not found", e);
}
datasource = (DataSource) jndiFactory.getObject();  
可以配置

application.yml

server:
  contextPath: jdbc/mySpace