java - JVMVRFY012 堆栈形状不一致;类=com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl

标签 java jvm websphere saaj

我正在从事升级项目,将 java web 应用程序从 websphere 应用程序服务器 8.5 中的 java 6 移动到 java 8。

我们正在使用许多 SOAP Web 服务调用来与其他内部系统和供应商系统进行交互。因此,现在每次系统尝试创建 SOAP 请求时,我们都会收到以下错误消息。

JVMVRFY012 stack shape inconsistent; class=com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl, method=createDocumentFragment()Lorg/w3c/dom/DocumentFragment;, pc=5; 

Type Mismatch, argument 0 in signature com/sun/xml/messaging/saaj/soap/SOAPDocumentFragment.:(Lcom/sun/org/apache/xerces/internal/dom/CoreDocumentImpl;)V does not match Exception Details: Location: com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl.createDocumentFragment()Lorg/w3c/dom/DocumentFragment; @5: JBinvokespecial Reason: Type 'com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl' (current frame, stack[2]) is not assignable to 'com/sun/org/apache/xerces/internal/dom/CoreDocumentImpl' Current Frame: bci: @5 flags: { } locals: { 'com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl' } stack: { 'uninitialized', 'uninitialized', 'com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl' },

作为解决方法,我们尝试将 jar 版本更新为 Saaj_impl-1.3.27,但仍然出现错误。

最佳答案

作为即兴猜测,该问题似乎是 SAAJ RI 和 Axis2 之间的 DOM 混淆。您的应用程序是否捆绑了自己的 Web 服务实现(包括 SAAJ)?您提到将 SAAJ 更新到 1.3.27,并且错误提到了 SAAJ RI,因此如果您的应用程序有自己的 Web 服务实现,那么您需要禁用 WebSphere 提供的 Web 服务实现:

https://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/twbs_thirdparty.html

您可以尝试设置以下系统属性:

-Djavax.xml.soap.SOAPFactory=com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl 
-Djavax.xml.soap.SOAPConnectionFactory=com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnectionFactory 
-Djavax.xml.soap.MetaFactory=com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl
-Dcom.ibm.websphere.webservices.DisableIBMJAXWSEngine=true 

这些属性只是一个示例,SAAJ RI 的完全限定名称可能会根据您使用的 SAAJ 版本而变化。

如果您的应用程序应该使用 WebSphere Web 服务引擎,您能告诉我您使用的是哪个版本的 Java 8 吗?

关于java - JVMVRFY012 堆栈形状不一致;类=com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57520800/

相关文章:

java - JVM字节码中的 "dup2_x2"指令有什么用?

java - 为什么 JAXB 找不到 XML 行数?

java - 如何在 Java 桌面应用程序中安全地实现 SQL 查询

java - 在 C++ 和 Java 中声明对象

java - "jmap -histo pid"到底打印了什么

java - 如何将 C 应用程序嵌入到 Java 小程序中

maven - 如何设置java类加载器PARENT_LAST

websphere - 尝试从 Jython (WAS) 实例化 Java 对象时出现 NPE

java - 使用 javax.ws.rs 的 Twitter oauth2

java - 使用继承时出现 NullPointerException