java - 在 weblogic 12.2.1.3 上创建 javax.xml.ws.Service 实例时出现 NullPointerException

标签 java soap wsdl weblogic weblogic12c

我们有一个由 JAX-WS RI 2.2.9-b130926.1035 生成的 EshopService_Service 类 - 从 wsdl 文件生成的源版本:2.2。

从 weblogic 版本 12.1.2.0.0 升级到 12.2.1.3 后,我们在创建 Service 实例时得到了这个堆栈:

java.lang.NullPointerException

    at com.oracle.webservices.impl.wsdl.WSDLBoundOperationImpl.<init>(WSDLBoundOperationImpl.java:540)

    at com.oracle.webservices.impl.wsdl.WSDLBoundPortTypeImpl.<init>(WSDLBoundPortTypeImpl.java:80)

    at com.oracle.webservices.impl.wsdl.WSDLModelImpl.mapBindings(WSDLModelImpl.java:169)

    at com.oracle.webservices.impl.wsdl.WSDLModelImpl.mapBindings(WSDLModelImpl.java:189)

    at com.oracle.webservices.impl.wsdl.WSDLModelImpl.<init>(WSDLModelImpl.java:48)

    at com.oracle.webservices.impl.wsdl.WSDLConverterImpl.wsdlModelFromDefinition(WSDLConverterImpl.java:292)

    at com.oracle.webservices.impl.wsdl.WSDLConverterImpl.getWSDLModel(WSDLConverterImpl.java:248)

    at com.oracle.webservices.impl.wsdl.WSDLConverterImpl.getWSDLService(WSDLConverterImpl.java:303)

    at weblogic.wsee.jaxws.spi.WLSProvider$ServiceDelegateImpl.<init>(WLSProvider.java:1124)

    at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:223)

    at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:150)

    at javax.xml.ws.Service.<init>(Service.java:77)

    at xx.xx.xxxxxxx.services.eshop.EshopService_Service.<init>(EshopService_Service.java:40)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)

    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105)

    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)

    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:238)

    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:242)

    at com.xxx.prj.xxx.col.integration.business.IntegrationService.getEshopServicePort(IntegrationService.groovy:39)

    at com.xxx.prj.xxxx.col.integration.business.IntegrationService.<init>(IntegrationService.groovy:46)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

WSDLBoundOperationImpl是weblogic的内部类,网上没有关于该类的信息...

我们已经反编译了 WSDLBoundOperationImpl 类,当 Owner.getPortType() 返回 null 时,它看起来在 owner.getPortType().get(this.name); 上失败...

事实上,我们的 WSDL 不包含任何“portType”元素,但 portType 不是必需的 wsdl 指令,并且相同的 WSDL 在 Weblogic 版本 12.1.2.0.0 上运行良好。

如何解决这个问题?我们无法更改 wsdl 文件的内容...

谢谢。

最佳答案

看起来我已经找到了解决方法...Weblogic 正在使用自己的 jax ws Provider 实现...但是使用 https://docs.oracle.com/cd/E24329_01/web.1211/e24964/data_types.htm#WSGET348您可以将 javax.xml.ws.spi.Provider 定义为(在我的例子中)与 org.apache.cxf.jaxws.spi.ProviderImpl ...然后,创建服务实例时,由于 Provider 使用 apace.cxf 提供程序的实例...

关于java - 在 weblogic 12.2.1.3 上创建 javax.xml.ws.Service 实例时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58402775/

相关文章:

web-services - SOAP 请求的问题

xml - 通过 Powershell 的 SOAP 语法

console - System.out 什么时候不会出现在 Java 控制台中?

java - 从 Google People API 获取 Google+ 电子邮件

java - Metro 与 Java 的 JAX-WS?

tomcat - JAX-WS:带有大附件的 OutOfMemory + ChainHandler

java - 如何创建只有一个数组的对象数组列表?

web-services - Microsoft Access 2010 将数据服务链接到 SOAP Web 服务

asp.net - 使用具有基本身份验证的 Web 服务

java - PHP SoapClient : Object passed is received as NULL in Java