我有以下......
Context aContext = = new InitialContext(settings);
aContext.lookup("java:comp/env/DB2_DB");
Run Code Online (Sandbox Code Playgroud)
还试过......
aContext.lookup("DB2_DB");
Run Code Online (Sandbox Code Playgroud)
web.xml中
<resource-ref>
<description>
</description>
<res-ref-name>DB2_DB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Application</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
<mapped-name>DB2_DB</mapped-name>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)
然后在我的ibm-web-bnd.xml中......
<resource-ref name="DB2_DB" binding-name="jdbc/DB2DB" />
Run Code Online (Sandbox Code Playgroud)
在Websphere中,我在资源> JDBC>数据源中看到绑定名称
但是当我运行我的应用程序时,我看到......
引发者:javax.naming.NameNotFoundException:上下文:Node04Cell/nodes/Node04/servers/server1,name:DB2_DB:找不到名称DB2_DB中的第一个组件.[root例外是org.omg.CosNaming.NamingContextPackage.NotFound:IDL:omg.org/CosNaming/NamingContext/NotFound:1.0] ^ M
这是WAS6-8.5的一个港口项目
Isa*_*aac 14
嗯,这个问题很老了,我看到还没有接受的答案,所以.
这是真正发生的事情:
java:comp/env/DB2_DB.ibm-web-bnd.xml)将应用程序绑定"转换" DB2_DB为WebSphere JNDI树(jdbc/DB2DB)中的真实名称.jdbc/DB2DB并将其返回给调用者.你得到一个NameNotFoundException在第一查找-的查找java:comp/env/DB2_DB.问题不在于找到jdbc/DB2DB; 它是DB2_DB在组件的环境中找到的.
您的部署描述符对我来说没问题,所以我猜你问题的原因是这样的:
Context aContext = new InitialContext(settings);
Run Code Online (Sandbox Code Playgroud)
您正在InitialContext通过提供一个实例来构建实例Hashtable.在Hashtable当你需要为建筑提供特殊的参数往往是有用的,但你必须知道什么时候使用它,什么时候,以避免它.一个JavaEE的容器内运行需要简单地访问容器的JNDI树代码很少,如果有的话,应提供任何Hashtable的InitialContext构造函数.
如果settings您传入的那些InitialContext包含例如PROVIDER_URL指示查找在某个远程外部JNDI树上发生的键,那么我不会感到惊讶.
所以,我将从废弃该参数开始:
Context aContext = new InitialContext();
Run Code Online (Sandbox Code Playgroud)
再给它一个镜头.
如果仍然失败,请使用WebSphere的dumpNamespace实用程序来清楚地了解WebSphere的JNDI树.
| 归档时间: |
|
| 查看次数: |
55996 次 |
| 最近记录: |