I just ran into a similar problem today due to a client set-up running both Axis and Axis2 in Tomcat-- basically I need to override a class from Axis with one from Axis2 in order to deploy my service. Geronimo seems to have ways to overcome this by using "hidden-classes" (maybe? haven't really used it); however, I do not see anything like this for Tomcat. Luckily, my problem only arises during deployment, so I was able to fix this by making a change in the Axis2 source org.apache.axis2.deployment.DeploymentClassLoader class.
Now the class loading is more like tomcat's webappX-- check the jars in the service's lib folder first and if the class is not found there, move on to search the parent... I'm not sure changing the source is a feasible option for you since I haven't looked at how much work changing other class loaders would be, nor am I recommending a similar solution since it is far from a best-practice. I am interested to see if there is a better way or work-around for this since I am not that deep into Axis to know if my changes will ever affect anything else. Does anyone with more Axis2 experience have a solution? -Brock Lucente, Richard D wrote: > > The issue has to do with class loading order. After a serious round of > debugging, what I found was that the tomcat classloader attempts to load > the class then fails. The parent classloader within JBoss attempts to > load the class then fails. Finally axis2 loads the class using the web > service's classloader from the service.aar's lib directory. In a > generic case, this is how things worked in my deployment. > > The issue I'm having is that I'm attempting to override the > javax.xml.registry.* classes shipped with JBoss with updated interfaces > to talk to a third party provider. My service.aar contains a lib > directory with the custom jars inside. However, the classloading scheme > described above causes the JBoss javax.xml.registry.* classes to always > be found first. I never can load from my classloader. When I attempted > to get the service classloader from the current MessageContext, I still > got the tomcat classloader which failed and then delegated to JBoss. > JBoss then loaded its implementation. > > I'm using JBoss 4.0.5.GA and Axis2-1.2. > > Can I change the classloading order so the service.aar's classloader > goes first? > > Help! > > -- View this message in context: http://www.nabble.com/classloading-question-with-axis2-and-jboss-tp16006230p22730644.html Sent from the Axis - User mailing list archive at Nabble.com.
