Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [virgo-dev] class loaders in context.xml

Hi Dmitry,
    I would like to give your suggested workaround a try, if you still think it may work in light of my communication with Violeta.

If so, where's this  "org.apache.catalina.loader" package that you mentioned for Import-Package?
--
Regards,
sd

On Thu, Nov 18, 2010 at 10:30 AM, Dmitry Sklyut <dmitry@xxxxxxxxxxx> wrote:
I think a better approach would be to create a fragment bundle with this manifest:

Bundle-ManifestVersion: 2

Bundle-Name: Gemini Web Tomcat extra imports

Bundle-SymbolicName: org.eclipse.gemini.web.tomcat.loader.fragment

Bundle-Version: 1

Fragment-Host: org.eclipse.gemini.web.tomcat

Import-Package: org.apache.catalina.loader;version="6.0.29.S2-r1559"


You might also need to import:

 org.apache.catalina.util;version="6.0.29.S2-r1559",

 org.apache.catalina.core;version="6.0.29.S2-r1559",

 org.apache.catalina;version="6.0.29.S2-r1559"


Try with the minimal set of org.apache.catalina.loader to see if that will be enough.


This is going to be a manifest only bundle.  You can easily create it in Eclipse.  Add this bundle to either repository/ext or repository/usr.  Restart with -clean.


Give that a try.  At least you wouldn't need to crack open a jar and deal with the manifest format (counting chars and wrapping properly).


You might still run into an issue with classes used internally by WebappLoader.  It uses some classes that are not exported by catalina bundle (org.apache.naming.resources package).


Regards,

Dmitry


On Thu, Nov 18, 2010 at 9:12 AM, Miles G <milesg78@xxxxxxxxx> wrote:
Hi,
 
Can you try the following:
 
go to <VWS-home-dir>/repository/ext
 
open org.eclipse.gemini.web.tomcat...jar

in the META-INF/MANIFEST.MF add import package org.apache.catalina.loader and try again the application with custom classloader.
 
Then share with us the result.
 
Regards,
Violeta
2010/11/18 Saadat Dowlati <sdowlati@xxxxxxxxxxxxxx>

Hi  Violeta,
   Here's the log -- see the last line -- the mentioned line#22 is the  <Loader ... /> line in the context.xml.
 
Nov 16, 2010 10:16:38 PM org.apache.tomcat.util.digester.Digester startElement
SEVERE: Begin event threw exception
org.eclipse.virgo.kernel.osgi.framework.ExtendedClassNotFoundException: org.apache.catalina.loader.WebappLoader in KernelBundleClassLoader: [bundle=org.eclipse.gemini.web.tomcat_1.1.0.RELEASE]
 at org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.loadClass(KernelBundleClassLoader.java:139)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:205)
 at org.apache.tomcat.util.digester.Rule.begin(Rule.java:153)
 at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1356)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
 at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1343)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
 at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
 at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
 at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1642)
 at org.apache.catalina.startup.ContextConfig.processContextConfig(ContextConfig.java:799)
 at org.apache.catalina.startup.ContextConfig.contextConfig(ContextConfig.java:742)
 at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:1019)
 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:273)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.StandardContext.init(StandardContext.java:5654)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4425)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
 at org.eclipse.gemini.web.tomcat.internal.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:120)
 at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:90)
 at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:120)
 at org.eclipse.virgo.kernel.install.artifact.internal.ArtifactStateMonitor.onStarted(ArtifactStateMonitor.java:205)
 at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.asyncStartSucceeded(AbstractInstallArtifact.java:273)
 at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.access$0(AbstractInstallArtifact.java:270)
 at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact$StateMonitorSignal.signalSuccessfulCompletion(AbstractInstallArtifact.java:223)
 at org.eclipse.virgo.kernel.core.internal.BundleStartTracker$1.run(BundleStartTracker.java:140)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.loader.WebappLoader
 at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
 at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
 at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
 at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
 at org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.loadClass(KernelBundleClassLoader.java:135)
 ... 37 more
Nov 16, 2010 10:16:38 PM org.apache.catalina.startup.ContextConfig processContextConfig
SEVERE: Parse error in context.xml for /EMA-Server
org.eclipse.virgo.kernel.osgi.framework.ExtendedClassNotFoundException: org.apache.catalina.loader.WebappLoader in KernelBundleClassLoader: [bundle=org.eclipse.gemini.web.tomcat_1.1.0.RELEASE]
 at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2806)
 at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2832)
 at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1359)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
 at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1343)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
 at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
 at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
 at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1642)
 at org.apache.catalina.startup.ContextConfig.processContextConfig(ContextConfig.java:799)
 at org.apache.catalina.startup.ContextConfig.contextConfig(ContextConfig.java:742)
 at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:1019)
 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:273)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.StandardContext.init(StandardContext.java:5654)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4425)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
 at org.eclipse.gemini.web.tomcat.internal.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:120)
 at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:90)
 at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:120)
 at org.eclipse.virgo.kernel.install.artifact.internal.ArtifactStateMonitor.onStarted(ArtifactStateMonitor.java:205)
 at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.asyncStartSucceeded(AbstractInstallArtifact.java:273)
 at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.access$0(AbstractInstallArtifact.java:270)
 at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact$StateMonitorSignal.signalSuccessfulCompletion(AbstractInstallArtifact.java:223)
 at org.eclipse.virgo.kernel.core.internal.BundleStartTracker$1.run(BundleStartTracker.java:140)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)
Caused by: org.eclipse.virgo.kernel.osgi.framework.ExtendedClassNotFoundException: org.apache.catalina.loader.WebappLoader in KernelBundleClassLoader: [bundle=org.eclipse.gemini.web.tomcat_1.1.0.RELEASE]
 at org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.loadClass(KernelBundleClassLoader.java:139)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:205)
 at org.apache.tomcat.util.digester.Rule.begin(Rule.java:153)
 at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1356)
 ... 33 more
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.loader.WebappLoader
 at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
 at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
 at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
 at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
 at org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.loadClass(KernelBundleClassLoader.java:135)
 ... 37 more
Nov 16, 2010 10:16:38 PM org.apache.catalina.startup.ContextConfig processContextConfig
SEVERE: Occurred at line 22 column 58
--
sd
 
 
On Wed, Nov 17, 2010 at 7:41 AM, Miles G <milesg78@xxxxxxxxx> wrote:
 
Hi,
 
I'm interested in what exactly the exception was because I can see from your original post only:
 
Caused by: org.eclipse.gemini.web.core.spi.ServletContainerException: Web application at '/EMA-Server' failed to start. Check the logs for more details.
 
So what was the real cause for the problem?
 
Regards,
Violeta
 
 
2010/11/16 Christopher Frost <frostc@xxxxxxxxxx>
 
Hi,
 
I'm afraid I'm out of educated guesses now. Will have to see if anyone else in the community has any ideas.
 
Chris.
 
On 16/11/2010 06:15, Saadat Dowlati wrote:
Hi Chris,
    Yes, the log shows that virgo is havinng problem with the loaderClass in the context.xml file. I also tried delegate="true", but didn't help. What do you mean by "depending on how the custom classloader is initialised"?
 
Is there any workaround? I would appreciate any other pointers.
--
Thanks,
sd
 
 
On Mon, Nov 15, 2010 at 11:19 AM, Christopher Frost <frostc@xxxxxxxxxx> wrote:
 
Hi,
 
Thanks for trying Virgo out.
 
I believe that the classloader you are trying to use there would constitute a custom classloader. Before trying to 'fix' this it would be best to confirm this is the problem. I would look in the config/serviceability.xml file and up the level of logging, maybe to 'DEBUG'. Then restart with the '-clean' option and deploy your app again. Now go and look in the log.log file and see what the first error to occur is. Now you will see the real cause.
 
If it is indeed classloading related from the application 'war' bundle then you could trying setting delegate="true". This might work, by falling back to the original classloader that is OSGi friendly, depending on how the custom classloader is initialised. 
 
Thanks,
Chris.
 
On 14/11/2010 21:31, Saadat Dowlati wrote:
Hello,
       We have become very interested in VWS and are trying to migrate our application from Tomcat. As the first step, following the documentation, I dropped our application WAR (which works on Tomcat 6) in the pickup directory. According to the log, VWS installs the WAR, but fails to start it.
The error messages don't provide any hint as to the root cause: 
[2010-11-14 16:12:05.472] fs-watcher                   <HD0001I> Hot deployer processing 'CREATED' event for file 'EMA-Server.war'.
[2010-11-14 16:12:06.122] fs-watcher                   <DE0000I> Installing bundle 'EMA-Server' version '0.0.0'.
[2010-11-14 16:12:09.285] fs-watcher                   <DE0001I> Installed bundle 'EMA-Server' version '0.0.0'.
[2010-11-14 16:12:09.311] fs-watcher                   <DE0004I> Starting bundle 'EMA-Server' version '0.0.0'.
[2010-11-14 16:12:09.316] Thread-3                     <WE0000I> Starting web bundle 'EMA-Server' version '0.0.0' with context path '/EMA-Server'.
[2010-11-14 16:12:14.696] Thread-3                     <WE0005E> Failed to start web bundle 'EMA-Server' version '0.0.0': consult the serviceability log for further details.
[2010-11-14 16:12:14.701] start-signalling-4           <DE0006E> Start failed for bundle 'EMA-Server' version '0.0.0'. org.eclipse.virgo.kernel.deployer.core.DeploymentException: W
eb application failed to start
        at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:129)
        at org.eclipse.virgo.kernel.install.artifact.internal.ArtifactStateMonitor.onStarted(ArtifactStateMonitor.java:205)
        at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.asyncStartSucceeded(AbstractInstallArtifact.java:273)
        at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact.access$0(AbstractInstallArtifact.java:270)
        at org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact$StateMonitorSignal.signalSuccessfulCompletion(AbstractInstallArtifact.java:223)
        at org.eclipse.virgo.kernel.core.internal.BundleStartTracker$1.run(BundleStartTracker.java:140)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: org.eclipse.gemini.web.core.WebApplicationStartFailedException: org.eclipse.gemini.web.core.spi.ServletContainerException: Web application at '/EMA-Server' failed to sta
rt. Check the logs for more details.
        at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:107)
        at org.eclipse.virgo.web.core.internal.WebBundleLifecycleListener.onStarted(WebBundleLifecycleListener.java:120)
        ... 8 common frames omitted
Caused by: org.eclipse.gemini.web.core.spi.ServletContainerException: Web application at '/EMA-Server' failed to start. Check the logs for more details.
        at org.eclipse.gemini.web.tomcat.internal.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:123)
        at org.eclipse.gemini.web.internal.StandardWebApplication.start(StandardWebApplication.java:90)
        ... 9 common frames omitted 
 
While searching in the documentation, I came across the following note. It got my attention, as we use the TomcatInstrumentableClassLoader in the Tomcat's context.xml packaged in our WAR file.
Note that the following context configuration features are not supported in Virgo Web Server:
  • Custom class loaders

 Is TomcatInstrumentableClassLoader  considered a "Custom class loader" in VWS? If yes, is there any workaround for it? Here's the line from our context.xml file:
 
 <Loader
  loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"
  useSystemClassLoaderAsParent="false" />
Thanks in advance,
--
sd
 
 
--
Chris Frost
SpringSource, a division of VMware

Virgo Website, Wiki and Forum

_______________________________________________
virgo-dev mailing list
 
 
 
 
--
Chris Frost
SpringSource, a division of VMware

Virgo Website, Wiki and Forum

_______________________________________________
virgo-dev mailing list
 
 
 
_______________________________________________
virgo-dev mailing list
 
 
 

_______________________________________________
virgo-dev mailing list
virgo-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/virgo-dev



_______________________________________________
virgo-dev mailing list
virgo-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/virgo-dev



_______________________________________________
virgo-dev mailing list
virgo-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/virgo-dev



Back to the top