Why Appian is not recognizing the org/w3c/dom/Node clas theat is bundled as part

Why Appian is not recognizing the org/w3c/dom/Node clas theat is bundled as part of core JDK 1.7.51 - rt.jar package?

I am developing a smart service that consumes Axis2 (1.6.2 version) web service. ( the smart service has the client code using static stub). I have packaged the essential jars from Axis 2 ( approx 18 jars ) in my lib folder. When i package this plugin project using Appian-> Export plugin option, it creates a jar file and all the axis2 libraries i put in lib folder are moved to META-INF/ lib.

When i run my code in standalone java mode ( using java -jar ), the code works perfectly.
But when i deploy this smart service and test it, I got an error:

JBAS014134: EJB Invocation failed on component UnattendedRequestHandlerBean for method public abstract com.appiancorp.process.engine.ContinuationResponse com.appiancorp.ra.workpoller.UnattendedRequestListener.onMessage(com.appiancorp.process.engine.UnattendedRequest): javax.ejb.EJBException:...

OriginalPostID-118765

OriginalPostID-118765

  Discussion posts and replies are publicly visible

  • ... java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/w3c/dom/Node
              at org.jboss.as.ejb3.tx.BMTInterceptor.handleException(BMTInterceptor.java:80) [jboss-as-ejb3-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
              at org.jboss.as.ejb3.tx.EjbBMTInterceptor.checkStatelessDone(EjbBMTInterceptor.java:92) [jboss-as-ejb3-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
              at org.jboss.as.ejb3.tx.EjbBMTInterceptor.handleInvocation(EjbBMTInterceptor.java:107) [jboss-as-ejb3-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
              at org.jboss.as.ejb3.tx.BMTInterceptor.processInvocation(BMTInterceptor.java:56) [jboss-as-ejb3-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
              at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
              ....
    Caused by: java.lang.ClassNotFoundException: org.w3c.dom.Node not found by com.sstest1 [68]
              at org.apache.felix.framework.BundleWiringImpl.findClassOrReso...
  • ...urceByDelegation(BundleWiringImpl.java:1460) [org.apache.felix.framework-4.0.3.jar:]
              at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72) [org.apache.felix.framework-4.0.3.jar:]
              at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843) [org.apache.felix.framework-4.0.3.jar:]
              at java.lang.ClassLoader.loadClass(ClassLoader.java:358) [rt.jar:1.7.0_51]
    My question is why should i include w3c/ DOM packages in my plugin when it is curretnly part of core JDK rt.jar itself?

    Then to fix the NoClassDefFound issue, i added xml-api.jar (tried with various versions 1.0.b2, 1.3.044, 1.4.01) to my plugin jar and this time Node class got loaded from my plugin, but i got a different error:
    Caused by: javax.ejb.EJBException: java.lang.RuntimeException: java.lang.ExceptionInInitializerError
    21:56:37,113 INFO [stdout] (default-threads - 35)           at org.jboss.as.ejb3.tx.BMTInterceptor.handleException(BMTInterce...
  • ... ptor.java:80)
    21:56:37,113 INFO [stdout] (default-threads - 35)           at org.jboss.as.ejb3.tx.EjbBMTInterceptor.checkStatelessDone(EjbBMTInterceptor.java:92)
    .....
    21:56:37,116 INFO [stdout] (default-threads - 35) Caused by: java.lang.ClassCastException: __redirected.__DocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory
    21:56:37,116 INFO [stdout] (default-threads - 35)           at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source)
    21:56:37,116 INFO [stdout] (default-threads - 35)           at org.apache.axiom.locator.ImplementationFactory.parseDescriptor(ImplementationFactory.java:77)
    21:56:37,116 INFO [stdout] (default-threads - 35)           at org.apache.axiom.locator.DefaultOMMetaFactoryLocator.<init>(DefaultOMMetaFactoryLocator.java:66)
    21:56:37,116 INFO [stdout] (default-threads - 35)           at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    21:56:37,116 INFO [stdout] (default-threads - 35)           at sun.reflect.NativeConstru...
  • ... ctorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    21:56:37,116 INFO [stdout] (default-threads - 35)           at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    21:56:37,116 INFO [stdout] (default-threads - 35)           at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    21:56:37,116 INFO [stdout] (default-threads - 35)           at java.lang.Class.newInstance(Class.java:374)
    21:56:37,116 INFO [stdout] (default-threads - 35)           at org.apache.axiom.om.OMAbstractFactory.<clinit>(OMAbstractFactory.java:95)
    21:56:37,116 INFO [stdout] (default-threads - 35)           ... 76 more

    This is due to the version differences in DomFactory because of the xml-api.jar i introduced.
    If i remove xml-api.jar, I am getting ClassNotFoundException for w3c Dom Node Class.

    Please suggest how to fix this problem.
    I am using JDK 1.7.51 & Appian 7.4 on Jboss EAP 6.0

    Thanks in advance

    Thanks,
    Jhothi