Jdbc 未找到Websphere WAR文件名异常

Jdbc 未找到Websphere WAR文件名异常,jdbc,websphere,jndi,web.xml,Jdbc,Websphere,Jndi,Web.xml,我已将WAR文件从Tomcat移动到Websphere。WAR文件在Tomcat中运行良好,并使用jndi名称连接到数据库。我在websphere中配置了相同的jdbc配置。当我尝试将数据库与应用程序连接时,会出现如下错误: 000000d0 SystemOut O javax.naming.NameNotFoundException: Name not found in context "java:". at com.ibm.ws.naming.ipbase.NameSpace.ge

我已将WAR文件从Tomcat移动到Websphere。WAR文件在Tomcat中运行良好,并使用jndi名称连接到数据库。我在websphere中配置了相同的jdbc配置。当我尝试将数据库与应用程序连接时,会出现如下错误:

000000d0 SystemOut     O javax.naming.NameNotFoundException: Name  not found in context "java:".
at com.ibm.ws.naming.ipbase.NameSpace.getParentCtxInternal(NameSpace.java:1969)
at com.ibm.ws.naming.ipbase.NameSpace.retrieveBinding(NameSpace.java:1376)
at com.ibm.ws.naming.ipbase.NameSpace.lookupInternal(NameSpace.java:1219)
at com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:1141)
at com.ibm.ws.naming.urlbase.UrlContextImpl.lookupExt(UrlContextImpl.java:1436)
at com.ibm.ws.naming.java.javaURLContextImpl.lookupExt(javaURLContextImpl.java:477)
at com.ibm.ws.naming.java.javaURLContextRoot.lookupExt(javaURLContextRoot.java:485)
at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:370)
at org.apache.aries.jndi.DelegateContext.lookup(DelegateContext.java:161)
at javax.naming.InitialContext.lookup(InitialContext.java:436)
at ConnPoolServlet.getConnection(ConnPoolServlet.java:65)
at ConnPoolServlet.service(ConnPoolServlet.java:25)

您能否建议如何使我的WAR文件与Websphere application server中的jndi名称一起工作?

您如何连接到数据源。您将需要使用InitialContext查找(与WsInitialNaming、iiop服务器地址与正确主体绑定等一起使用)。 )并连接到WAS中的数据源,这与通常在Tomcat上执行的方式略有不同


此外,您可能还希望执行dumpNamespace,以查看是否存在可供数据源和连接池查找和使用的JNDI绑定。如何连接到数据源。您将需要使用InitialContext查找(与WsInitialNaming、iiop服务器地址与正确主体绑定等一起使用)。 )并连接到WAS中的数据源,这与通常在Tomcat上执行的方式略有不同


此外,您可能还希望执行dumpNamespace,以查看是否存在可供数据源和连接池查找和使用的JNDI绑定

在没有资源引用的直接JNDI查找情况下,Tomcat允许使用
java:comp/env/
前缀直接查找,而WAS不允许。使用
jdbc/datasource
(不带前缀)查找
ConnPoolServlet.getConnection(..)
如果直接查找JNDI而不引用资源,Tomcat允许使用
java:comp/env/
前缀直接查找,而WAS则不允许。将
jdbc/datasource
(不带前缀)用于
ConnPoolServlet.getConnection(..)

中的WAS,您需要向我们显示
ConnPoolServlet.getConnection(..)的代码。似乎您正在尝试查找一些没有名称的资源。消息中的
name
notfound.
之间应该有您正在查找的资源的名称。您需要向我们显示
ConnPoolServlet.getConnection(…)
的代码。似乎您正在尝试查找一些没有名称的资源。消息中的
name
notfound..
这两个词之间应该有您正在查找的资源的名称,这是完全不正确的。WAS使用java:comp/env进行资源引用,这是访问服务器资源的推荐做法。可能应用程序中的资源引用定义不正确。对于无资源引用的直接查找,答案是正确的。问题是“WAR文件在Tomcat中工作得很好,并且使用jndi名称连接到数据库”,这表明直接查找的情况非常严重。答案不完整,但并非不正确。请你撤销否决票好吗?完成回答,并解释在Tomcat用于直接查找的情况下,它允许java:comp,然后我将撤销。就目前的形式而言,它具有误导性和不完整性。这是完全错误的。WAS使用java:comp/env进行资源引用,这是访问服务器资源的推荐做法。可能应用程序中的资源引用定义不正确。对于无资源引用的直接查找,答案是正确的。问题是“WAR文件在Tomcat中工作得很好,并且使用jndi名称连接到数据库”,这表明直接查找的情况非常严重。答案不完整,但并非不正确。请你撤销否决票好吗?完成回答,并解释在Tomcat用于直接查找的情况下,它允许java:comp,然后我将撤销。与当前形式一样,它具有误导性和不完整性。您是否可以尝试不带前缀的查找:jdbc/danone。我假设您在管理控制台中测试了连接,并且它工作了。Hi Ramachandran,这个问题用java:comp/解决了。谢谢您的时间。您可以尝试不带前缀的查找吗?just:jdbc/danone。我假设您在管理控制台中测试了连接,并且它工作了。Hi Ramachandran,这个问题用java:comp/解决了。谢谢你抽出时间