当前位置: 首页 > 知识库问答 >
问题:

在Websphere web应用程序中,web服务的JNDI查找失败

曾泳
2023-03-14

我试图从运行在WebSphere7上的web应用程序中调用SAP web服务。

客户机是从WSDL生成的,我使用JNDI查找来查找服务。查找失败,出现NameNotFoundException

网状物xml:

<service-ref>
    <description>
    WSDL Service ZSDWebAddressPrinting</description>
    <service-ref-name>service/ZSDWebAddressPrinting</service-ref-name>
    <service-interface>sap_com.document.sap.soap.functions.mc_style.ZSDWebAddressPrinting_Service</service-interface>
    <wsdl-file>WEB-INF/wsdl/ZSDWebAddressPrinting.wsdl</wsdl-file>
    <jaxrpc-mapping-file>WEB-INF/ZSDWebAddressPrinting_mapping.xml</jaxrpc-mapping-file>
    <service-qname xmlns:pfx="urn:sap-com:document:sap:soap:functions:mc-style">
    pfx:ZSDWebAddressPrinting</service-qname>
    <port-component-ref>
        <service-endpoint-interface>sap_com.document.sap.soap.functions.mc_style.ZSDWebAddressPrinting_PortType</service-endpoint-interface>
    </port-component-ref>
</service-ref>

JNDI查找:

InitialContext ctx = new InitialContext();
return (Service)ctx.lookup("java:comp/env/service/ZSDWebAddressPrinting");

例外情况:

[10.12.14 10:24:03:645 CET] 00000024 SystemOut     O |2014-12-10 10:24:03,645|ERROR|r : 0|ws.WebServiceLocator.getService - Lookup of service reference with jndi name =  ZSDWebAddressPrinting failed !
javax.naming.NameNotFoundException: Name comp/env/service not found in context "java:".
    at com.ibm.ws.naming.ipbase.NameSpace.getParentCtxInternal(NameSpace.java:1837)
    at com.ibm.ws.naming.ipbase.NameSpace.lookupInternal(NameSpace.java:1166)
    at com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:1095)
    at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1235)
    at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:395)
    at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:221)
    at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:161)
    at javax.naming.InitialContext.lookup(InitialContext.java:436)
    at com.acme.ws.WebServiceLocator.getService(WebServiceLocator.java:26)

我已经使用Dumpnamesspace来显示所有的名称,但是我看不到ZSDWebAddressPrting

有许多JDBC资源也可以通过JNDI访问。这些在垃圾堆中可见,工作正常。

我忘了什么吗?

共有1个答案

艾心远
2023-03-14

将类加载从PARENT_LAST更改为PARENT_FIRST有所帮助。服务查找现在起作用了。

我不知道为什么这会对JNDI产生影响。JDBC查找在这两种情况下都有效。

有人能对此发表评论吗?

 类似资料:
  • 我已经为使用外部Tomcat的Spring Boot应用程序的JNDI数据源连接进行了bellow提到的配置。 context.xml类似 为spring boot定义了Application.Properties 更新了web.xml,如

  • 如果有人能帮助我纠正代码中的问题,我将不胜感激。不知道我哪里错了。 当前我的persistence.xml包含

  • 我正在使用Quartz 2.1。5作为Java EE 7环境(Wildfly)中的集群式调度器。启动Quartz作业后,该作业需要访问JavaEE会话bean。我的软件有点旧(没有可用的依赖注入),所以作业使用jndi查找来获取会话bean。作为jndi查找,我使用可移植jndi语法。 java:app[/module name]/enterprisebean name[/interface na

  • 在查找jdbc数据源的JNDI连接时,我遇到以下错误: javax。命名。ConfigurationException:无法完成“java:”名称上的JNDI操作,因为服务器运行时无法将该操作的线程与任何J2EE应用程序组件关联。当使用“java:”名称的JNDI客户端未在服务器应用程序请求的线程上执行时,可能会出现这种情况。确保J2EE应用程序不会在静态代码块或该J2EE应用程序创建的线程中对“

  • 在使用资源引用从服务器上下文获取数据源连接时,我收到了JNDI查找错误。请注意,如果我不使用,则“查找”是有效的。 javax。命名。ConfigurationException:无法完成“java:”名称上的JNDI操作,因为服务器运行时无法将该操作的线程与任何J2EE应用程序组件关联。当使用“java:”名称的JNDI客户端未在服务器应用程序请求的线程上执行时,可能会出现这种情况。确保J2EE

  • 我目前正在从事一个Java桌面应用程序项目。这是一个现有的应用程序,我被要求修改它。 他们说我必须使用RESTful Web服务将数据从桌面应用程序发送到Web应用程序。所以我搜索了一些关于RESTful Web服务的信息(因为我对那类东西不熟悉,对Java也不熟悉),我看到一些使用RESTful Web服务的非Web应用程序,但非Web应用程序是Maven项目。我需要修改的现有java桌面应用程