Friday, October 12, 2007

Solving the erroneous handlers error for weblogic

I was running my weblogic 9 server at work and one of the JSP pages threw this at me.


java.lang.InternalError: erroneous handlers at com.sun.facelets.compiler.TextUnit.addChild(TextUnit.java:207) at com.sun.facelets.compiler.CompilationManager.startUnit(CompilationManager.java:297) at com.sun.facelets.compiler.CompilationManager.pushNamespace(CompilationManager.java:255) at com.sun.facelets.compiler.SAXCompiler$CompilationHandler.startPrefixMapping(SAXCompiler.java:199)


After being puzzled for a few minutes I figured that I was using the JROCKIT BEA VM to run my weblogic server and it was not giving me a proper description of what was actually wrong. If you encounter the stack trace shown above in your application (or something with erroneous handlers in it), do the following from weblogic workshop to learn what the error really is. Probably a class file is missing. You should get a NoClassDefFoundError after you do these steps, if that is what the problem really is Configure a server in weblogic workshop and double click on it to get this screen


Server in Workshop:




Click on launch configuration:


Set the JAVA_VENDOR flag to 'Sun' to use the sun JVM or 'BEA' to use the JROCKIT JVM. In our case we set it to 'Sun'.The sun JDK should now give us more information about the mysterious error. If the property JAVA_VENDOR is not available add it.
If you have not configured anything in workshop you can always set the JAVA_VENDOR system property in the setDomainEnv.cmd file located in your domain bin directory using the line SET JAVA_VENDOR=Sun

This should force weblogic to use the sun JVM instead. You can verify this by looking for the startup path from which java.exe is called from your console (the server log console not the web console)

No comments: