This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I have a xslt transformation code. In RAD 7.0 (on WAS 6.1 or WAS 7), when I start my server in debug mode, the xslt transformation is happening properly without errors. However when I start my server in normal(start) mode, the xslt transformation code throughs following error:
[i]wsjar:file:/C:/MyApp/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/MyApp.ear/WebSrv.jar!/XSL/Response.xsl; Line #12; Column #58; java.lang.ClassCastException: org.apache.xpath.objects.XString incompatible with org.apache.xpath.objects.XNodeSet
When I run the same xslt transformation in RAD 6.0 ( WAS 5.1 ), it works correctly in server start and debug mode.As xslt code is running fine in server debug mode, I think there is no problem in the code. I am not able to make out what is the difference between the WAS 5.1 and WAS 6.1/7 and the difference between WAS server start and debug mode, that is causing this error?
Different versions of WebSphere gets packaged with different versions of various files. If a newer version of WebSphere has updated their libraries, the old libraries you are depending upon might cause problems.
What is the name of that jar file your problem class is packaged in? Look on your classpath for similar named jar files. Perhaps you can find another implementation of these class files somewhere else on the classloader hierarchy.
Alternatively, sometimes just switchning the classloader to parent-last, especially if you have the jar files packaged within the web application, will force WebSphere to use your own version, rather than the servers version.
Here's a little tutorial I put together on classloading and application packaging with WebSphere. You might find it helps to explain what is happening with your varous classloaders: