We just recently upgraded one of our servers from JDK 1.3.15 to 1.4.2. After doing so, we are no longer able to get the web application to work. I am including the error and the web.xml. This worked fine with JDK 1.3.x. Any suggestions? Nov 3, 2005 5:27:05 PM org.apache.commons.digester.Digester endElement SEVERE: End event threw exception java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:252) at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256) at org.apache.commons.digester.Rule.end(Rule.java:276) at org.apache.commons.digester.Digester.endElement(Digester.java:1058) at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1720) at org.apache.crimson.parser.Parser2.content(Parser2.java:1963) at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1691) at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:667) at org.apache.crimson.parser.Parser2.parse(Parser2.java:337) at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448) at org.apache.commons.digester.Digester.parse(Digester.java:1548) at org.apache.catalina.startup.ContextConfig.applicationConfig(ContextConfig.java:282) at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:639) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:243) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166) at org.apache.catalina.core.StandardContext.start(StandardContext.java:3587) at org.apache.catalina.core.NSJSPStandardContext.start(NSJSPStandardContext.java:58) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188) at org.apache.catalina.core.StandardHost.start(StandardHost.java:754) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:363) at org.apache.catalina.core.StandardService.start(StandardService.java:497) at com.tandem.servlet.catalina.core.NSJSPServer.start(NSJSPServer.java:2148) at com.tandem.servlet.catalina.core.NSJSPContainer.start(NSJSPContainer.java:525) at com.tandem.servlet.catalina.core.NSJSPContainer.execute(NSJSPContainer.java:412) at com.tandem.servlet.catalina.core.NSJSPContainer.process(NSJSPContainer.java:189) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.tandem.servlet.NSJSPBootstrap.main(NSJSPBootstrap.java:208) Caused by: java.lang.IllegalArgumentException: addChild: Child name 'action' is not unique at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:815) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807) at org.apache.catalina.core.StandardContext.addChild(StandardContext.java:1346) ... 34 more
Our web.xml file looks like this: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> <web-app> <context-param> <param-name>application.debug</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>application.config</param-name> <param-value>/WEB-INF/config.properties</param-value> <description>The config file used for holding specific configuration attributes</description> </context-param> <context-param> <param-name>local.server</param-name> <param-value>SCPMS4</param-value> </context-param> <context-param> <param-name>dir.documentation</param-name> <param-value>/usr/tandem/web_applications/ctc/docs/</param-value> <description>The location for the user support docs</description> </context-param> <context-param> <param-name>PMon</param-name> <param-value>$KSMS</param-value> <description>Production Pathmon process name</description> </context-param> <context-param> <param-name>SMon</param-name> <param-value>$USMS</param-value> <description>Simulation Pathmon process name</description> </context-param> <context-param> <param-name>Alarm-SC</param-name> <param-value>CTC-JVHP-SVR</param-value> <description>Server class name for adding alarms</description> </context-param> <context-param> <param-name>Inter-SC</param-name> <param-value>CTC-INTER</param-value> <description>Server class name for intermediate server</description> </context-param> <context-param> <param-name>Sim-Inter-SC</param-name> <param-value>CTC-CTIN-SVR</param-value> <description>Server class name for simulation intermediate server</description> </context-param> <context-param> <param-name>Error-Header</param-name> <param-value>[CTC_GUI]</param-value> <description>Header to prepend to all recorded errors</description> </context-param> <context-param> <param-name>documentation-init-file</param-name> <param-value>/usr/tandem/web_applications/ctc/docs.properties</param-value> <description>Initialization file location for documentation elements</description> </context-param> <context-param> <param-name>documentation-sleep-timer</param-name> <param-value>1</param-value> <description>The time in minutes to check for changes to the init-file</description> </context-param> <context-param> <param-name>MaxNumberOfFailedAttempts</param-name> <param-value>3</param-value> <description>Maximum Number of Failed Login Attempts before the user account is LOCKED</description> </context-param> <context-param> <param-name>date.default.pattern</param-name> <param-value>MM/dd/yyyy HH:mm</param-value> <description>Default formatting pattern for use with TandemTagLibrary</description> </context-param> <context-param> <param-name>date.default.timeZone</param-name> <param-value>GMT</param-value> <description>Default time zone to use for date formatting using TandemTagLibrary</description> </context-param> <context-param> <param-name>production.environment</param-name> <param-value>n</param-value> <description>Determines if this system is a production system.</description> </context-param> <filter> <filter-name>CGIAttributeFilter</filter-name> <filter-class>com.sprint.ctc.struts.CGIAttributeFilter</filter-class> </filter> <filter-mapping> <filter-name>CGIAttributeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>com.sprint.ctc.listeners.SessionManagerListener</listener-class> </listener> <servlet> <servlet-name>action</servlet-name> <servlet-class>com.sprint.ctc.struts.Controller</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet> <servlet-name>DownloadServlet</servlet-name> <display-name>This is the display name of my J2EE component</display-name> <description>This is the description of my J2EE component</description> <servlet-class>com.sprint.ctc.DownloadServlet</servlet-class> </servlet> <servlet> <servlet-name>Log4JInitServlet</servlet-name> <display-name>This is the display name of my J2EE component</display-name> <description>This is the description of my J2EE component</description> <servlet-class>com.sprint.ctc.Log4JInitServlet</servlet-class> <init-param> <param-name>log4j-init-file</param-name> <param-value>/WEB-INF/log4j.properties</param-value> <description>Location of the log4j.properties file</description> </init-param> <init-param> <param-name>log4j-delay</param-name> <param-value>10000</param-value> <description>Number of milliseconds delay before checking for a change to log4j.properties file</description> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>InputBatchPull</servlet-name> <servlet-class>com.sprint.ctc.ajax.InputBatchPull</servlet-class> </servlet> <servlet> <servlet-name>SimulationEnvironmentPull</servlet-name> <servlet-class>com.sprint.ctc.ajax.SimulationEnvironmentPull</servlet-class> </servlet> <servlet> <servlet-name>AdministrationServlet</servlet-name> <servlet-class>com.sprint.ctc.ajax.AdministrationMessagePull</servlet-class> </servlet> <servlet> <servlet-name>AdminstrationMessagePull</servlet-name> <description>Pull/Push Message from admin to users</description> <servlet-class>com.sprint.ctc.ajax.AdministrationMessagePull</servlet-class> </servlet> <servlet> <servlet-name>ScriptInputPull</servlet-name> <description>Used by AJAX to pull list of Script Inputs (Files/Cllis) from the database</description> <servlet-class>com.sprint.ctc.ajax.ScriptInputPull</servlet-class> </servlet> <servlet> <servlet-name>ScriptSetupPull</servlet-name> <servlet-class>com.sprint.ctc.ajax.ScriptSetupPull</servlet-class> </servlet> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>DownloadServlet</servlet-name> <url-pattern>/download</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Log4JInitServlet</servlet-name> <url-pattern>/servlet/Log4JInitServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>InputBatchPull</servlet-name> <url-pattern>/inputbatchpull</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>SimulationEnvironmentPull</servlet-name> <url-pattern>/simulationpull</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AdministrationServlet</servlet-name> <url-pattern>/AdministrationServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AdminstrationMessagePull</servlet-name> <url-pattern>/adminmessagepull</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ScriptInputPull</servlet-name> <url-pattern>/scriptInputPull</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ScriptSetupPull</servlet-name> <url-pattern>/scriptSetupPull</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>/form/login.jsp</welcome-file> </welcome-file-list> <taglib> <taglib-uri>/WEB-INF/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/struts-html</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/struts-logic</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/taglibs-datetime</taglib-uri> <taglib-location>/WEB-INF/taglibs-datetime.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/amarda-logic</taglib-uri> <taglib-location>/WEB-INF/amarda-logic.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/tlds/CTCTagLib</taglib-uri> <taglib-location>/WEB-INF/tlds/CTCTagLib.tld</taglib-location> </taglib> </web-app>