Hi,
AFAIK, we don't support sharing (same classloader) tuscany jars across
multiple web applications. As you have found out, packaging tuscany jars in
the webapp works. There is another scheme we can support with the SCANode
APIs: we can share the physical tuscany jars across multiple web
applications, but these jars are still loaded by different classloaders from
the webapp. If you are interested in this scheme, take a look at:
https://svn.apache.org/repos/asf/tuscany/java/sca/modules/node-launcher-webapp.
Thanks,
Raymond
From: Jérôme Besnainou
Sent: Thursday, August 28, 2008 10:08 AM
To: [email protected]
Subject: Issue at tomcat stop time when I shared Tuscany lib between several
webApplication
Hello,
I'm using tuscany 1.3 inside tomcat 6.0.16 with jdk 1.6.06.
I have 2 webApplications. These 2 webApplications are using sca composites
(one composite on each webApplication).
The tuscany lib are shared between these two webApplications on the tomcat
« shared.loader ».
Everything work well but I got this error when I stop tomcat and my second
webApplication is undeployed :
org.apache.catalina.startup.HostConfig undeployApps
ATTENTION: Error while removing context [/datalayerApplicationTest]
java.lang.NullPointerException
at
org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.close(DefaultSCADomain.java:365)
at
org.apache.tuscany.sca.host.webapp.WebSCADomain.destroy(WebSCADomain.java:50)
at
org.apache.tuscany.sca.host.webapp.WebAppServletHost.destroy(WebAppServletHost.java:302)
at
org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.destroy(TuscanyServletFilter.java:72)
at
org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFilterConfig.java:332)
at
org.apache.catalina.core.StandardContext.filterStop(StandardContext.java:3744)
at
org.apache.catalina.core.StandardContext.stop(StandardContext.java:4506)
at
org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:924)
at
org.apache.catalina.startup.HostConfig.undeployApps(HostConfig.java:1189)
at org.apache.catalina.startup.HostConfig.stop(HostConfig.java:1160)
at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:313)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1086)
at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1098)
at org.apache.catalina.core.StandardEngine.stop(StandardEngine.java:448)
at org.apache.catalina.core.StandardService.stop(StandardService.java:584)
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:744)
at org.apache.catalina.startup.Catalina.stop(Catalina.java:628)
at org.apache.catalina.startup.Catalina.start(Catalina.java:603)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Note:
- If I have n webApplications the n-1 last webApplications raised
this error at undeploy time.
- If tuscany lib are put in each webApplication WEB-INF/lib there
is no issue
I seems that when tomcat undeploy the first webApplication the «
DefaultSCADomain » is closed for all composites.
I put in attachement frontApplication.composite (composite used on the first
webApplication) and middleoffice.composite (composite used on the second
webApplication).
Let me know your opinion about this issue.
Is it a best practice to shared tuscany lib or do you think it is better to
put a tuscany in each webApplication ?
Best Regards,
Jérôme