oracle - WebLogic 的 Hibernate JNDI 查找抛出无法解决
问题描述
我已在 Oracle Weblogic 12.1.3 上配置了一个数据源,并尝试在 Spring MVC 应用程序中查找此数据源。
// Weblogic configuration
Datasource Name in weblogic : Admin Data Source
JNDI Name : bsh/AdminDS
// Spring MVC Configuration
@Bean
public DataSource getDataSourceUsingJndi() throws NamingException {
return (DataSource) new JndiTemplate().lookup("bsh/AdminDS"); // 1st way
}
@Bean
public LocalSessionFactoryBean sessionFactory() throws NamingException {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(getDataSourceUsingJndi());
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.put(AvailableSettings.DIALECT, hibernateDialect);
properties.put(AvailableSettings.SHOW_SQL, showSql);
properties.put(AvailableSettings.FORMAT_SQL, formatSql);
return properties;
}
我得到以下堆栈跟踪:
Caused by: javax.naming.NameNotFoundException: Unable to resolve 'bsh.AdminDS'. Resolved 'bsh'; remaining name 'AdminDS'
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1180)
at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:270)
at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:187)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:210)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:224)
at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:253)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:426)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at org.springframework.jndi.JndiTemplate.lambda$lookup$0(JndiTemplate.java:156)
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:91)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:156)
at com.bsh.config.WebConfig.getDataSourceUsingJndi(WebConfig.java:68)
我尝试了不同的查找方式 - 第二种方式
public DataSource getDataSourceUsingJndi() {
JndiDataSourceLookup jndiLookup = new JndiDataSourceLookup();
jndiLookup.setResourceRef(true);
return jndiLookup.getDataSource("bsh/AdminDS");
}
我的配置有什么问题吗?
解决方案
推荐阅读
- apache-spark - Pyspark Streaming - 仅从 [window_start, window_end] 显示起始窗口
- c# - LINQ GroupBy 仅在键不为空时选择
- gnuplot - 如何使用 gnuplot 内联颜色列?
- list - Flutter - 参数类型“Iterable>”不能分配给类型“List”
- flutter - 在任何设备上灵活且大小合适的容器
- angular - 对 Angular 管道中的参数使用扩展运算符
- javascript - 怎么做
隐藏在 vuejs 中的字段? - javascript - 如何替换字符串中的反斜杠美元符号
- android - 如何使 recyclerView Pinch 缩放每个孩子的点击事件中的多个孩子?
- android - withContext(Dispatchers.IO) 如何使用房间