Hi Brijesh,
I think the issue is due to the WLS classloader policy.
WebLogic Server classloading is centered on the concept of an
application. An application is normally packaged in an Enterprise
Archive (EAR) file containing application classes. Everything within an
EAR file is considered part of the same application. The following may
be part of an EAR or can be loaded as standalone applications:
* An Enterprise JavaBean (EJB) JAR file
* A Web application WAR file
* A resource adapter RAR file
The classloader hierarchy is, by default:
WebApp -> EJB -> WLS main classloader.
Remember that one time you go up in the classloader hierarchy, it's not
possible to come back down.
Nevertheless, you can define your classloader structure in the
weblogic-application.xml using:
<classloader-structure>
<module-ref>
<module-uri>ejb1.jar</module-uri>
</module-ref>
<module-ref>
<module-uri>web3.war</module-uri>
</module-ref>
<classloader-structure>
<module-ref>
<module-uri>web1.war</module-uri>
</module-ref>
</classloader-structure>
<classloader-structure>
<module-ref>
<module-uri>ejb3.jar</module-uri>
</module-ref>
<module-ref>
<module-uri>web2.war</module-uri>
</module-ref>
<classloader-structure>
<module-ref>
<module-uri>web4.war</module-uri>
</module-ref>
</classloader-structure>
<classloader-structure>
<module-ref>
<module-uri>ejb2.jar</module-uri>
</module-ref>
</classloader-structure>
</classloader-structure>
</classloader-structure>
In your case, your don't have a ClassNotFoundException, you have a
NoClassDefFoundError. It means that the class is found but not in the
correct classloader.
Could you make a try using a global classloader for your EAR (not
splitted by war/ejb) ?
Regards
JB
brijesh wrote:
hello ,
I did servicemix3.3.war deployment in weblogic 10 as part of an other ear
file. I have service assembly which uses smx-scripting component as part of
workflow. When i am calling this service I am getting following fault
mesage,
<faultcode>soap:Server</faultcode>
<faultstring>java.lang.NoClassDefFoundError:
groovy/lang/GroovyObject</faultstring>
When I deploy as war file , without using ear file this service assembly
works absoulutely fine. When I deploy war file as part of ear file i am
getting above mentioned error , complete error stack as below
org.apache.cxf.interceptor.Fault: java.lang.NoClassDefFoundError:
groovy/lang/GroovyObject
at
org.apache.servicemix.cxfbc.CxfBcConsumer$JbiPostInvokerInterceptor.handleMessage(CxfBcConsumer.java:769)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:89)
at
org.apache.servicemix.cxfbc.CxfBcConsumer$JbiChainInitiationObserver.onMessage(CxfBcConsumer.java:631)
at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:302)
at
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:265)
at
org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerList.handle(HandlerList.java:49)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:879)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:741)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:213)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)
Caused by: java.lang.Exception: java.lang.NoClassDefFoundError:
groovy/lang/GroovyObject
at
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:550)
at
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.NoClassDefFoundError: groovy/lang/GroovyObject
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at
weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:338)
at
weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:291)
at
weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:259)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at
weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
at
weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:35)
at
org.apache.xbean.classloader.MultiParentClassLoader.loadClass(MultiParentClassLoader.java:184)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at
org.apache.xbean.classloader.MultiParentClassLoader.loadClass(MultiParentClassLoader.java:184)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at
groovy.lang.MetaClassRegistry$MetaClassCreationHandle.create(MetaClassRegistry.java:81)
at
org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getGlobalMetaClass(MetaClassRegistryImpl.java:252)
at
org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.access$100(MetaClassRegistryImpl.java:45)
at
org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$LocallyKnownClasses.getFromGlobal(MetaClassRegistryImpl
at
org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$LocallyKnownClasses.getMetaClass(MetaClassRegistryImpl.
at
org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$MyThreadLocal.getMetaClass(MetaClassRegistryImpl.java:3
at
org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:265)
at
org.codehaus.groovy.runtime.InvokerHelper.invokePojoMethod(InvokerHelper.java:765)
at
org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:754)
at
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(ScriptBytecodeAdapter.java:170)
at Script1.run(Script1.groovy:24)
at
com.sun.script.groovy.GroovyScriptEngine.eval(GroovyScriptEngine.java:243)
at
com.sun.script.groovy.GroovyCompiledScript.eval(GroovyCompiledScript.java:46)
at javax.script.CompiledScript.eval(CompiledScript.java:44)
at
org.apache.servicemix.scripting.ScriptingEndpoint.process(ScriptingEndpoint.java:300)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:581)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
... 8 more
Any idea on this?
Regards
Brijesh N K