2016-08-23 71 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