Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-990

Autodetect and autoset the correct saaj factories when running under the ibm jvm

XMLWordPrintable

    • 0
    • 0% 0%
    • Todo
    • 7.0 Sprint 1

      When running with a stock IBM JVM and saaj am getting the stack trace below.

      [1] 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)[:1.7.0] 
      at java.lang.J9VMInternals.verify(J9VMInternals.java:85)[:1.7.0] 
      at java.lang.J9VMInternals.initialize(J9VMInternals.java:162)[:1.7.0] 
      at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.<init>(SOAPPartImpl.java:106) 
      at com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.<init>(SOAPPart1_1Impl.java:70) 
      at com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl.getSOAPPart(Message1_1Impl.java:90) 
      at org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor.handleMessage(SAAJOutInterceptor.java:125)[144:org.apache.cxf.cxf-rt-bindings-soap:2.6.0.redhat-60024] 
      at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:120)[148:org.apache.cxf.cxf-rt-frontend-jaxws:2.6.0.redhat-60024] 
      at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:71)[148:org.apache.cxf.cxf-rt-frontend-jaxws:2.6.0.redhat-60024] 
      at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)[136:org.apache.cxf.cxf-api:2.6.0.redhat-60024] 
      at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)[136:org.apache.cxf.cxf-api:2.6.0.redhat-60024] 
      at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)[136:org.apache.cxf.cxf-api:2.6.0.redhat-60024] 
      at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)[136:org.apache.cxf.cxf-api:2.6.0.redhat-60024] 
      at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)[136:org.apache.cxf.cxf-api:2.6.0.redhat-60024] 
      at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)[149:org.apache.cxf.cxf-rt-frontend-simple:2.6.0.redhat-60024] 
      at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)[148:org.apache.cxf.cxf-rt-frontend-jaxws:2.6.0.redhat-60024] 
      at $Proxy67.open(Unknown Source) 
      
      

      Workaround is to define the following 4 system properties:

      -Djavax.xml.soap.MessageFactory=com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl 
      -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 
      

      Logging enhancement to autodetect the JDK and set the right connection factories for the JDK out of the box.

      Similar issue is discussed in OPENEJB-1126

              yfang@redhat.com Freeman(Yue) Fang
              davestanley Dave Stanley (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: