2016-08-23 798 views
1

從SOAP客戶端調用基於SOAP的webservice時出現以下錯誤。此WebService使用IBM JDK 7.0部署在Websphere 8.5.0中。但是我能夠成功地調用並獲得來自同一個WebService的響應,當我用IBM JDK 6.0在WAS中部署相同的耳朵時。我們將非常感謝有關如何解決此問題的任何輸入。如何解決java.lang.VerifyError:JVMVRFY012堆棧形狀不一致; class = com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl

java.lang.VerifyError: JVMVRFY012 stack shape inconsistent; class=com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl, method=createDocumentFragment()Lorg/w3c/dom/DocumentFragment;, pc=5 at java.lang.J9VMInternals.verifyImpl(Native Method) at java.lang.J9VMInternals.verify(J9VMInternals.java:94) at java.lang.J9VMInternals.initialize(J9VMInternals.java:169) at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.(SOAPPartImpl.java:106) at com.sun.xml.messaging.saaj.soap.ver1_2.SOAPPart1_2Impl.(SOAPPart1_2Impl.java:69) at com.sun.xml.messaging.saaj.soap.ver1_2.Message1_2Impl.getSOAPPart(Message1_2Impl.java:89) at com.sun.xml.messaging.saaj.soap.MessageImpl.initCharsetProperty(MessageImpl.java:1491) at com.sun.xml.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:552) ... 47 more

回答

1

的問題是WAS提供的庫VS Web應用程序li​​braries.Finally我能夠修復因之間的衝突這個問題通過進行下去的變化。現在,我能夠與IBM對Java WAS 8.5.0部署應用程序,8.5.5 6或7

  1. 設置WebModule級別的類加載器屬性設置爲Class loaded with local class loader first (parent last)。 這可以通過使用WebSphere管理控制檯來實現

    應用程序 - >所有應用程序 - >選擇應用程序名稱 - >管理模塊 - >選擇一個模塊 - >類加載器順序

  2. 從我的項目中刪除下面的依賴POM

    WSDL4J,軸SAAJ,軸JAXRPC,org.apache.axis,XML的API,公共發現,JAXB核心

  3. 添加下面的依賴關係到我的項目POM

    的Xalan,xercesImpl,JAXB的API,JAXB-IMPL

+0

如果你的答案解決了你的問題,請接受它 – rainman

0

「堆棧形狀不一致」通常意味着用作參數的類在調用者被編譯和被調用者被編譯之間發生了變化。簡單的解決方法是重新編譯雙方,以便他們使用相同的類定義。

(大多數情況下,我只是重新編譯我的整個項目,而不是試圖找出什麼是不同步的。)

+1

「堆棧形狀不一致」 是指字節碼是無效的,而不是一些類不相容性。重新編譯不會解決問題,除非第一個編譯器中存在第二個不存在的錯誤。 –

+0

我很少看到無效的字節碼。 – keshlam