While trying to run ODE with WebLogic, I got the following exception.
ernal.WebAppServletContext@10c1fd1 – appName: ‘ode’, name: ‘ode’, context-path:
‘/ode’] Root cause of ServletException.
java.lang.VerifyError: class org.apache.xml.serialize.XML11Serializer overrides
final method ?.?
at java.lang.ClassLoader.defineClass1(Native Method)
Truncated. see log file for complete stacktrace
This is not complete stack trace but I have just given the top of exception description. This is a good example of class loading problem. Actually XML11Serializer class is in ‘xercesImpl-2.9.0.jar’ in ODE. This class file conflicts with one in WebLogic. To resolve this issue, other then changing some small application level configuration, I have Created weblogic.xml with ‘<prefer-web-inf-classes>true</prefer-web-inf-classes>’ entry and put
it in ode/web-inf/ directory. This fixed the problem for me. ‘prefer-web-inf-classes’ element (a sub-element of the
<container-descriptor> element), by default is set to False. Setting this element to True subverts the classloader delegation model so that class definitions from the Web application are loaded in preference to class definitions in higher-level classloaders. This allows a Web application to use its own version of a third-party class, which might also be part of WebLogic Server. If you want to read more about this you can go to this link. Since I have used WL 9.2, it’s a link for docs92. You can change it to 81 or 100 for WL 8.1 and 10.0 respectively.