Sorry, not yet.
I would like to make a test on weblogic with the war embedded into an ear to test the classloader structure.

Regards
JB

brijesh wrote:
JB, Any comments on this
regards
Brijesh N K



brijesh wrote:
JB, Thanks for the response and valuable comment. As far as my understanding, servicemix war file allways create a runtime
data, servicemixDB folder in root directory(in weblogic domain directory).
All the installed components and associated jars , service assemblies
associated jars would reside in data directory. I have explored the data
directory and extracted and saw the classes are avaiable in this
directory.
But i am confused how to specify to weblogic classloader to pick the class
from above mentioned  data directory created by servicemix more over this
directory conaints dynamic data it will be determined on runtime. I have
issues only with scripting component, other SEs ,and BCs are perfectly
working, Please help me on this
Regards
Brijesh N K


Jean-Baptiste Onofré wrote:
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



Reply via email to