簡體   English   中英

在 weblogic 12.2.1.3 上創建 javax.xml.ws.Service 實例時出現 NullPointerException

[英]NullPointerException when creating instance of javax.xml.ws.Service on weblogic 12.2.1.3

我們有一個由 JAX-WS RI 2.2.9-b130926.1035 生成的 EshopService_Service class - 生成的源版本:來自 wsdl 文件的 2.2。

從 weblogic 版本 12.1.2.0.0 升級到 12.2.1.3 后,我們在創建服務實例時得到了這個堆棧:

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 的內部 class 並且在 web 上沒有關於 class 的信息......

我們已經反編譯了 class WSDLBoundOperationImpl ,它看起來在owner.getPortType().get(this.name);上失敗了。 當 owner.getPortType() 返回 null...

事實上,我們的 WSDL 不包含任何“portType”元素,但 portType 不是必需的 wsdl 指令和相同的 WSDL 與 Weblogic 版本 12.02.02.1 配合良好。

如何解決這個問題呢? 我們無法更改 wsdl 文件的內容...

謝謝你。

看起來我找到了解決方法... Weblogic 正在使用它自己的 jax ws Provider 實現... 但是使用https://docs.oracle.com/cd/E24329_01/web.1211/e24964/tm#data_types您可以使用org.apache.cxf.jaxws.spi.ProviderImpljavax.xml.ws.spi.Provider定義為(在我的情況下)... ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM