DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13908>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13908 Odd configuration behavior when used with BEA JRockit VM Summary: Odd configuration behavior when used with BEA JRockit VM Product: Tomcat 4 Version: 4.1.12 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Major Priority: Other Component: Catalina AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] I began experimenting with using BEA JRockit VM (v7.0, sdk version 1.4.0). At first all seemed well. I was able to deploy and run applications through the Ant tasks. Then I restarted the Tomcat instance. It would not restart and logged the following error to logs/stdout.txt and logs/stderr.txt: ---------------------------- BEGIN Catalina.start: java.lang.IllegalAccessException: Class org.apache.commons.digester.ObjectCreateRule can not access a member of class org.apache.catalina.core.StandardContextValve with modifiers "" java.lang.IllegalAccessException: Class org.apache.commons.digester.ObjectCreateRule can not access a member of class org.apache.catalina.core.StandardContextValve with modifiers "" at org.apache.commons.digester.Digester.createSAXException (Ljava.lang.String;Ljava.lang.Exception;)Lorg.xml.sax.SAXException;(Unknown Source) at org.apache.commons.digester.Digester.createSAXException (Ljava.lang.Exception;)Lorg.xml.sax.SAXException;(Unknown Source) at org.apache.commons.digester.Digester.startElement (Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Lorg.xml.sax.Attributes;) V(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.startElement (Lorg.apache.xerces.xni.QName;Lorg.apache.xerces.xni.XMLAttributes;Lorg.apache.x erces.xni.Augmentations;)V(Unknown Source) at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement (Lorg.apache.xerces.xni.QName;Lorg.apache.xerces.xni.XMLAttributes;Lorg.apache.x erces.xni.Augmentations;)V(Unknown Source) at org.apache.xerces.impl.XMLNamespaceBinder.emptyElement (Lorg.apache.xerces.xni.QName;Lorg.apache.xerces.xni.XMLAttributes;Lorg.apache.x erces.xni.Augmentations;)V(Unknown Source) at org.apache.xerces.impl.dtd.XMLDTDValidator.emptyElement (Lorg.apache.xerces.xni.QName;Lorg.apache.xerces.xni.XMLAttributes;Lorg.apache.x erces.xni.Augmentations;)V(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement()Z (Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher. dispatch(Z)Z(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Z) Z(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Z)Z(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse (Lorg.apache.xerces.xni.parser.XMLInputSource;)V(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse (Lorg.apache.xerces.xni.parser.XMLInputSource;)V(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse (Lorg.xml.sax.InputSource;)V(Unknown Source) at org.apache.commons.digester.Digester.parse(Lorg.xml.sax.InputSource;) Ljava.lang.Object;(Unknown Source) at org.apache.catalina.startup.Catalina.start()V(Unknown Source) at org.apache.catalina.startup.Catalina.execute()V(Unknown Source) at org.apache.catalina.startup.Catalina.process([Ljava.lang.String;)V (Unknown Source) at COM.jrockit.reflect.NativeMethodInvoker.invoke0(ILjava.lang.Object; [Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at COM.jrockit.reflect.NativeMethodInvoker.invoke(Ljava.lang.Object; [Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at COM.jrockit.reflect.VirtualNativeMethodInvoker.invoke (Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at java.lang.reflect.Method.invoke(Ljava.lang.Object; [Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source) at org.apache.catalina.startup.Bootstrap.main([Ljava.lang.String;)V (Unknown Source) -------------------------------- END I found this very odd since I have been working with this version of Tomcat for some time with the Sun JVM(1.4.0) and never experienced this. Upon further inspection, I found that when the manager or admin application saves the server.xml it differs substantially between the two VMs and this was the cause of the problem. When saved under JRockit, it adds a lot of extra listeners and valves to the file that are not present when run with the SUN VM. Consequently, the next time the system starts, it fails because these extra definitions throw exceptions. The immediate solution is to not use JRockit, but this is a troubling problem -- it seems to be an awefully high level problem to be associated to which VM you use. Anyway, here are copies of the configuration files generated when making the same sequence of changes in the admin app when running under JRockit (first) and Sun 1.4.0 (second): ------------------------ BEGIN server.xml generated with JRockit --------------- <?xml version='1.0' encoding='utf-8'?> <Server className="org.apache.catalina.core.StandardServer" debug="0" port="0" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.NamingContextListener" debug="0" name="/"/> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/> <GlobalNamingResources> <Environment name="simpleValue" override="true" type="java.lang.Integer" value="30"/> <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" scope="Shareable" type="org.apache.catalina.UserDatabase"/> <Resource name="mail/default" scope="Shareable" type="javax.mail.Session"/> <Resource name="jdbc/cardapp" scope="Shareable" type="javax.sql.DataSource"/> <ResourceParams name="UserDatabase"> <parameter> <name>factory</name> <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value> </parameter> <parameter> <name>pathname</name> <value>conf/tomcat-users.xml</value> </parameter> </ResourceParams> <ResourceParams name="mail/default"> <parameter> <name>mail.smtp.host</name> <value>10.116.66.6</value> </parameter> </ResourceParams> <ResourceParams name="jdbc/cardapp"> <parameter> <name>validationQuery</name> <value>SELECT 1</value> </parameter> <parameter> <name>url</name> <value></value> </parameter> <parameter> <name>password</name> <value></value> </parameter> <parameter> <name>maxActive</name> <value>35</value> </parameter> <parameter> <name>maxWait</name> <value>5000</value> </parameter> <parameter> <name>driverClassName</name> <value>com.sybase.jdbc2.jdbc.SybDriver</value> </parameter> <parameter> <name>username</name> <value></value> </parameter> <parameter> <name>maxIdle</name> <value>10</value> </parameter> </ResourceParams> </GlobalNamingResources> <Service className="org.apache.catalina.core.StandardService" debug="0" name="Tomcat-Standalone"> <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" acceptCount="10" bufferSize="2048" connectionTimeout="20000" debug="0" enableLookups="true" maxProcessors="75" minProcessors="5" port="8082" protocolHandlerClassName="org.apache.coyote.http11.Http11Protocol" proxyPort="0" redirectPort="8443" scheme="http" secure="false" tcpNoDelay="true" useURIValidationHack="false"> <Factory className="org.apache.catalina.net.DefaultServerSocketFactory"/> </Connector> <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" acceptCount="10" bufferSize="2048" connectionTimeout="20000" debug="0" enableLookups="true" maxProcessors="75" minProcessors="5" port="8012" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" proxyPort="0" redirectPort="8443" scheme="http" secure="false" tcpNoDelay="true" useURIValidationHack="false"> <Factory className="org.apache.catalina.net.DefaultServerSocketFactory"/> </Connector> <Engine className="org.apache.catalina.core.StandardEngine" debug="0" defaultHost="localhost" mapperClass="org.apache.catalina.core.StandardEngineMapper" name="Standalone"> <Host className="org.apache.catalina.core.StandardHost" appBase="webapps" autoDeploy="true" configClass="org.apache.catalina.startup.ContextConfig" contextClass="org.apache.catalina.core.StandardContext" debug="0" deployXML="true" errorReportValveClass="org.apache.catalina.valves.ErrorReportValve" liveDeploy="true" mapperClass="org.apache.catalina.core.StandardHostMapper" name="localhost" unpackWARs="true"> <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="Tomcat Administration Application" docBase="../server/webapps/admin" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/admin" privileged="true" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"> <Listener className="org.apache.catalina.startup.ContextConfig" debug="0"/> <Listener className="org.apache.catalina.core.NamingContextListener" debug="0" name="/Standalone/localhost/admin"/> <Logger className="org.apache.catalina.logger.FileLogger" debug="0" directory="logs" prefix="localhost_admin_log." suffix=".txt" timestamp="true" verbosity="1"/> <Valve className="org.apache.catalina.authenticator.FormAuthenticator" algorithm="MD5" cache="true" debug="0" entropy="org.apache.catalina.authenticator.FormAuthenticator@cd" randomClass="java.security.SecureRandom"/> <Valve className="org.apache.catalina.core.StandardContextValve" debug="0"/> </Context> <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="String Match Services" docBase="C:\TomcatServers_Prod\ScoringServices\work\Standalone\localhost\manager \StringMatchServices.war" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/StringMatchServices" privileged="false" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"> <Listener className="org.apache.catalina.startup.ContextConfig" debug="0"/> <Listener className="org.apache.catalina.core.NamingContextListener" debug="0" name="/Standalone/localhost/StringMatchServices"/> <Valve className="org.apache.catalina.core.StandardContextValve" debug="0"/> </Context> <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="AddressServices" docBase="C:\TomcatServers_Prod\ScoringServices\work\Standalone\localhost\manager \AddressServices.war" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/AddressServices" privileged="false" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"> <Listener className="org.apache.catalina.startup.ContextConfig" debug="0"/> <Listener className="org.apache.catalina.core.NamingContextListener" debug="0" name="/Standalone/localhost/AddressServices"/> <Valve className="org.apache.catalina.core.StandardContextValve" debug="0"/> <ResourceLink global="jdbc/cardapp" name="jdbc/cardapp" type="javax.sql.DataSource"/> </Context> <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="Cardapp Models" docBase="C:\TomcatServers_Prod\ScoringServices\work\Standalone\localhost\manager \CardModelServices.war" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/CardModelServices" privileged="false" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"> <Listener className="org.apache.catalina.startup.ContextConfig" debug="0"/> <Listener className="org.apache.catalina.core.NamingContextListener" debug="0" name="/Standalone/localhost/CardModelServices"/> <Valve className="org.apache.catalina.core.StandardContextValve" debug="0"/> <ResourceLink global="jdbc/cardapp" name="jdbc/cardapp" type="javax.sql.DataSource"/> </Context> <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="BureauServices" docBase="C:\TomcatServers_Prod\ScoringServices\work\Standalone\localhost\manager \BureauServices.war" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/BureauServices" privileged="false" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"> <Listener className="org.apache.catalina.startup.ContextConfig" debug="0"/> <Listener className="org.apache.catalina.core.NamingContextListener" debug="0" name="/Standalone/localhost/BureauServices"/> <Valve className="org.apache.catalina.core.StandardContextValve" debug="0"/> </Context> <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="Welcome to Tomcat" docBase="ROOT" mapperClass="org.apache.catalina.core.StandardContextMapper" path="" privileged="false" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"> <Listener className="org.apache.catalina.startup.ContextConfig" debug="0"/> <Listener className="org.apache.catalina.core.NamingContextListener" debug="0" name="/Standalone/localhost"/> <Valve className="org.apache.catalina.core.StandardContextValve" debug="0"/> </Context> <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="Tomcat Manager Application" docBase="../server/webapps/manager" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/manager" privileged="true" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"> <Listener className="org.apache.catalina.startup.ContextConfig" debug="0"/> <Listener className="org.apache.catalina.core.NamingContextListener" debug="0" name="/Standalone/localhost/manager"/> <Valve className="org.apache.catalina.authenticator.BasicAuthenticator" algorithm="MD5" cache="true" debug="0" entropy="org.apache.catalina.authenticator.BasicAuthenticator@e5" randomClass="java.security.SecureRandom"/> <Valve className="org.apache.catalina.core.StandardContextValve" debug="0"/> <ResourceLink global="UserDatabase" name="users" type="org.apache.catalina.UserDatabase"/> </Context> <Listener className="org.apache.catalina.startup.HostConfig" configClass="org.apache.catalina.startup.ContextConfig" contextClass="org.apache.catalina.core.StandardContext" debug="0" deployXML="true" liveDeploy="true" unpackWARs="true"/> <Logger className="org.apache.catalina.logger.FileLogger" debug="0" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true" verbosity="1"/> <Valve className="org.apache.catalina.valves.ErrorReportValve" debug="0"/> <Valve className="org.apache.catalina.valves.ErrorDispatcherValve" debug="0"/> <Valve className="org.apache.catalina.core.StandardHostValve" debug="0"/> </Host> <Listener className="org.apache.catalina.startup.EngineConfig" debug="0"/> <Logger className="org.apache.catalina.logger.FileLogger" debug="0" directory="logs" prefix="catalina_log." suffix=".txt" timestamp="true" verbosity="1"/> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" debug="0" resourceName="UserDatabase" validate="true"/> <Valve className="org.apache.catalina.core.StandardEngineValve" debug="0"/> </Engine> </Service> </Server> ------------------------------ END JROCKIT server.xml ------------------------- ------------------------------ BEGIN SUN server.xml --------------------------- <?xml version='1.0' encoding='utf-8'?> <Server className="org.apache.catalina.core.StandardServer" debug="0" port="0" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/> <GlobalNamingResources> <Environment name="simpleValue" override="true" type="java.lang.Integer" value="30"/> <Resource name="jdbc/cardapp" scope="Shareable" type="javax.sql.DataSource"/> <Resource name="mail/default" scope="Shareable" type="javax.mail.Session"/> <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" scope="Shareable" type="org.apache.catalina.UserDatabase"/> <ResourceParams name="jdbc/cardapp"> <parameter> <name>validationQuery</name> <value>SELECT 12</value> </parameter> <parameter> <name>url</name> <value></value> </parameter> <parameter> <name>password</name> <value></value> </parameter> <parameter> <name>maxActive</name> <value>35</value> </parameter> <parameter> <name>maxWait</name> <value>5000</value> </parameter> <parameter> <name>driverClassName</name> <value>com.sybase.jdbc2.jdbc.SybDriver</value> </parameter> <parameter> <name>username</name> <value></value> </parameter> <parameter> <name>maxIdle</name> <value>10</value> </parameter> </ResourceParams> <ResourceParams name="mail/default"> <parameter> <name>mail.smtp.host</name> <value>10.116.66.6</value> </parameter> </ResourceParams> <ResourceParams name="UserDatabase"> <parameter> <name>factory</name> <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value> </parameter> <parameter> <name>pathname</name> <value>conf/tomcat-users.xml</value> </parameter> </ResourceParams> </GlobalNamingResources> <Service className="org.apache.catalina.core.StandardService" debug="0" name="Tomcat-Standalone"> <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" acceptCount="10" bufferSize="2048" connectionTimeout="20000" debug="0" enableLookups="true" maxProcessors="75" minProcessors="5" port="8082" protocolHandlerClassName="org.apache.coyote.http11.Http11Protocol" proxyPort="0" redirectPort="8443" scheme="http" secure="false" tcpNoDelay="true" useURIValidationHack="false"> <Factory className="org.apache.catalina.net.DefaultServerSocketFactory"/> </Connector> <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" acceptCount="10" bufferSize="2048" connectionTimeout="20000" debug="0" enableLookups="true" maxProcessors="75" minProcessors="5" port="8012" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" proxyPort="0" redirectPort="8443" scheme="http" secure="false" tcpNoDelay="true" useURIValidationHack="false"> <Factory className="org.apache.catalina.net.DefaultServerSocketFactory"/> </Connector> <Engine className="org.apache.catalina.core.StandardEngine" debug="0" defaultHost="localhost" mapperClass="org.apache.catalina.core.StandardEngineMapper" name="Standalone"> <Host className="org.apache.catalina.core.StandardHost" appBase="webapps" autoDeploy="true" configClass="org.apache.catalina.startup.ContextConfig" contextClass="org.apache.catalina.core.StandardContext" debug="0" deployXML="true" errorReportValveClass="org.apache.catalina.valves.ErrorReportValve" liveDeploy="true" mapperClass="org.apache.catalina.core.StandardHostMapper" name="localhost" unpackWARs="true"> <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="Tomcat Manager Application" docBase="../server/webapps/manager" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/manager" privileged="true" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"> <ResourceLink global="UserDatabase" name="users" type="org.apache.catalina.UserDatabase"/> </Context> <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="Tomcat Administration Application" docBase="../server/webapps/admin" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/admin" privileged="true" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"> <Logger className="org.apache.catalina.logger.FileLogger" debug="0" directory="logs" prefix="localhost_admin_log." suffix=".txt" timestamp="true" verbosity="1"/> </Context> <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="Welcome to Tomcat" docBase="ROOT" mapperClass="org.apache.catalina.core.StandardContextMapper" path="" privileged="false" reloadable="false" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"> </Context> <Logger className="org.apache.catalina.logger.FileLogger" debug="0" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true" verbosity="1"/> </Host> <Logger className="org.apache.catalina.logger.FileLogger" debug="0" directory="logs" prefix="catalina_log." suffix=".txt" timestamp="true" verbosity="1"/> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" debug="0" resourceName="UserDatabase" validate="true"/> </Engine> </Service> </Server> ------------------------------- END SUN server.xml ----------------------------- This problem is repeatable on multiple machines and in all circumstances. I don't know if it makes a difference, but I am running the JRockit management server with the following arguments: -Djrockit.managementserver=true -Djrockit.managementserver.port=9082 -- To unsubscribe, e-mail: <mailto:tomcat-dev-unsubscribe@;jakarta.apache.org> For additional commands, e-mail: <mailto:tomcat-dev-help@;jakarta.apache.org>