我无法将Weblogic(12c)定义的JNDI数据源映射到本地jndi名称。
我在weblogic mysql数据源中有一个数据源定义为“mysqltestds”,我想在Web应用程序中将i映射到本地名称“localds”
我的web.xml属性是
<resource-ref>
<res-ref-name>localds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
使用weblogic.xml
<weblogic-web-app>
<resource-description>
<res-ref-name>localds</res-ref-name>
<jndi-name>mysqltestds</jndi-name>lls
</resource-description>
</weblogic-web-app>
当我使用全局名称“mysqltestds”获取数据源时,它可以正常工作。
Context initialContext = new InitialContext();
Object resource = initialContext.lookup("mysqltestds");
dataSource = (DataSource) resource;
然而,当我尝试“localds”时,它失败并出现错误:
Context initialContext = new InitialContext();
Object resource = initialContext.lookup("localds");
dataSource = (DataSource) resource;
javax.naming.NameNotFoundException:无法解析'localds'。解决 '';剩余名称'localds'
任何人都可以提供帮助。我按照此stackOverflow问题Tomcat vs Weblogic JNDI Lookup中的说明进行操作,但我没有取得任何成功。
答案 0 :(得分:1)
如果您在控制台中查看服务器页面并单击您正在使用的服务器,也可以。
然后在页面上有一个名为jndiViewer的链接,您应该能够浏览数据源以确认其位置。
答案 1 :(得分:1)
我最终通过反复试验来解决这个问题。
当你使用本地资源引用时,你必须使用“java:comp / env / ..”前缀来引用它,所以当我做出以下更改时,我的java代码才有效:
Context initialContext = new InitialContext();
Object resource = initialContext.lookup("java:comp/env/localds");
dataSource = (DataSource) resource;
希望如果其他人遇到类似的问题,这是有用的
答案 2 :(得分:0)
与此错误相关的主题并不多,最近我从旧的Jboss版本迁移到WildFly 10时遇到过这个问题。
我发现我可以通过 server.log 来发现要在lookup
中使用的正确字符串。