[ http://issues.apache.org/jira/browse/TUSCANY-262?page=all ] Jeremy Boynes closed TUSCANY-262: ---------------------------------
Resolution: Invalid Assign To: Jeremy Boynes Closing as invalid as we need to handle classloaders in an appropriate manner. > The packaging scheme for Tuscany runtime and dependency jars is problematic > against the Tomcat class loading hierarchy > ---------------------------------------------------------------------------------------------------------------------- > > Key: TUSCANY-262 > URL: http://issues.apache.org/jira/browse/TUSCANY-262 > Project: Tuscany > Type: Bug > Components: Java SCA Tomcat Integration > Reporter: Raymond Feng > Assignee: Jeremy Boynes > Priority: Critical > > As a result from the investigation on JIRA issue Tuscany-258, I found the > following problem. > Right now, most of the Tuscany and dependency jars are copied to > $CATALINA_HOME/server/lib. Is it by design? I think it's problematic and it's > the root cause of the problem > described by 258. > Here's a quote from the Tomcat 5.0 document @ > http://tomcat.apache.org/tomcat-5.0-doc/class-loader-howto.html: > "Catalina - This class loader is initialized to include all classes and > resources required to implement Tomcat 5 itself. These classes and resources > are TOTALLY invisible to web applications. All unpacked classes and resources > in $CATALINA_HOME/server/classes, as well as classes and resources in JAR > files under $CATALINA_HOME/server/lib, are made visible through this class > loader. " > It leads to a very messy classloading story. The classloader for the Tuscany > runtime classes/interfaces is NOT part of the web application's classloader > chain. Some classes in the runtime (including Tuscany and Axis2) uses Thread > context classloader as the starting point to resolve resources/classes and > it'll fail without the hacky classloader switching all over the place. > I did some experiement and found out the following should be the correct > packaging scheme: > 1) Only tuscany-tomcat-SNAPSHOT.jar should be copied to > $CATALINA_HOME/server/lib since it contains a class > "org.apache.tuscany.tomcat.TuscanyHost" extending > "org.apache.catalina.core.StandardHost" which is packaged in catalina.jar > under $CATALINA_HOME/server/lib. > 2) All the other Tuscany jars should be copied to $CATALINA_HOME/common/lib > With the new strategy, we can remove the classloader switching hacks in the > code base. > I can upload the patch if you guys agree with me. The patch includes the > changes against the build.xml (testing/tomcat), TuscanyContextListener.java > (sca/tomcat) and the rollbacks of the workaround committed by Ant under 258. > Thanks, > Raymond -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira