  | Mailing List | | Home | | Forum Home | | JBoss - Java Application Server | | Tomcat - JSP/Servlet container | | Struts - A MVC web framework | | iText - An open source PDF Java Library | | JDOM - JDOM XML Parser | | J2EE - A mailing list for Java(tm) 2 Platform, Enterprise Edition | | JSP - A mailing list about Java Server Pages specification and reference | | J2EE Pattern - An interest list for Sun Java Center J2EE Pattern Catalog | | Servlet - A mailing list for discussion about Sun Microsystem's Java Servlet API Technology | |
Struts & Hibernate
|
|
|
  | | | Help loading XML config file via Init Servlet | Help loading XML config file via Init Servlet 2007-01-14 - By James Dekker
Back Hello there,
I am using the Apache Commons Digester to load an XML config file via a servlet with init params...
I keep getting this error when I start Tomcat 5.5.9 and have deployed the war file via my build script:
INFO: Deploying web application archive coffeebreak.war 2007-01-14 03:10:33,050 WARN [org.coffeebreak.logging.Log4jInitServlet] - Loaded: log4j.properties file attributes-config.xml not found, /Developer/JavaTools/tomcat/jakarta- tomcat-5 (See http://cat-5.ora-code.com).5.9/bin/WEB-INF/classes/org/coffeebreak/config/attributes- config.xml 2007-01-14 03:10:33,074 WARN [org.coffeebreak.helper.AttributeBeanXmlConfigHelper] - rules: null org.apache.commons.digester.xmlrules.XmlLoadException  at org.apache.commons.digester.xmlrules.FromXmlRuleSet $URLXMLRulesLoader.loadRules(FromXmlRuleSet.java:199) at org.apache.commons.digester.xmlrules.FromXmlRuleSet (FromXmlRuleSet.java:176) at org.apache.commons.digester.xmlrules.FromXmlRuleSet (FromXmlRuleSet.java:141) at org.apache.commons.digester.Digester (Digester.java:1998) at org.apache.commons.digester.xmlrules.DigesterLoader (DigesterLoader.java:80) at org.coffeebreak.helper.AttributeBeanXmlConfigHelper.parse (AttributeBeanXmlConfigHelper.java:29) at org.coffeebreak.config.XmlConfigInitServlet.init (XmlConfigInitServlet.java:22) at javax.servlet.GenericServlet (GenericServlet.java:211) at org.apache.catalina.core.StandardWrapper (StandardWrapper.java:1091) at org.apache.catalina.core.StandardWrapper (StandardWrapper.java:925) at org.apache.catalina.core.StandardContext (StandardContext.java:3857) at org.apache.catalina.core.StandardContext (StandardContext.java:4118) at org.apache.catalina.core.ContainerBase (ContainerBase.java:759) at org.apache.catalina.core.ContainerBase (ContainerBase.java:739) at org.apache.catalina.core.StandardHost (StandardHost.java: 524) at org.apache.catalina.startup.HostConfig (HostConfig.java: 788) at org.apache.catalina.startup.HostConfig (HostConfig.java: 677) at org.apache.catalina.startup.HostConfig (HostConfig.java: 473) at org.apache.catalina.startup.HostConfig (HostConfig.java:1102) at org.apache.catalina.startup.HostConfig (HostConfig.java:311) at org.apache.catalina.util.LifecycleSupport (LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase (ContainerBase.java: 1020) at org.apache.catalina.core.StandardHost (StandardHost.java:718) at org.apache.catalina.core.ContainerBase (ContainerBase.java: 1012) at org.apache.catalina.core.StandardEngine (StandardEngine.java: 442) at org.apache.catalina.core.StandardService (StandardService.java:450) at org.apache.catalina.core.StandardServer (StandardServer.java: 683) at org.apache.catalina.startup.Catalina (Catalina.java:537) 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 (Method.java:585) at org.apache.catalina.startup.Bootstrap (Bootstrap.java:271) at org.apache.catalina.startup.Bootstrap (Bootstrap.java:409) Caused by: java.lang.NullPointerException  at org.apache.commons.digester.xmlrules.FromXmlRuleSet $URLXMLRulesLoader.loadRules(FromXmlRuleSet.java:197) ... 33 more java.lang.NullPointerException  at org.apache.commons.digester.xmlrules.FromXmlRuleSet $URLXMLRulesLoader.loadRules(FromXmlRuleSet.java:197) at org.apache.commons.digester.xmlrules.FromXmlRuleSet (FromXmlRuleSet.java:176) at org.apache.commons.digester.xmlrules.FromXmlRuleSet (FromXmlRuleSet.java:141) at org.apache.commons.digester.Digester (Digester.java:1998) at org.apache.commons.digester.xmlrules.DigesterLoader (DigesterLoader.java:80) at org.coffeebreak.helper.AttributeBeanXmlConfigHelper.parse (AttributeBeanXmlConfigHelper.java:29) at org.coffeebreak.config.XmlConfigInitServlet.init (XmlConfigInitServlet.java:22) at javax.servlet.GenericServlet (GenericServlet.java:211) at org.apache.catalina.core.StandardWrapper (StandardWrapper.java:1091) at org.apache.catalina.core.StandardWrapper (StandardWrapper.java:925) at org.apache.catalina.core.StandardContext (StandardContext.java:3857) at org.apache.catalina.core.StandardContext (StandardContext.java:4118) at org.apache.catalina.core.ContainerBase (ContainerBase.java:759) at org.apache.catalina.core.ContainerBase (ContainerBase.java:739) at org.apache.catalina.core.StandardHost (StandardHost.java: 524) at org.apache.catalina.startup.HostConfig (HostConfig.java: 788) at org.apache.catalina.startup.HostConfig (HostConfig.java: 677) at org.apache.catalina.startup.HostConfig (HostConfig.java: 473) at org.apache.catalina.startup.HostConfig (HostConfig.java:1102) at org.apache.catalina.startup.HostConfig (HostConfig.java:311) at org.apache.catalina.util.LifecycleSupport (LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase (ContainerBase.java: 1020) at org.apache.catalina.core.StandardHost (StandardHost.java:718) at org.apache.catalina.core.ContainerBase (ContainerBase.java: 1012) at org.apache.catalina.core.StandardEngine (StandardEngine.java: 442) at org.apache.catalina.core.StandardService (StandardService.java:450) at org.apache.catalina.core.StandardServer (StandardServer.java: 683) at org.apache.catalina.startup.Catalina (Catalina.java:537) 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 (Method.java:585) at org.apache.catalina.startup.Bootstrap (Bootstrap.java:271) at org.apache.catalina.startup.Bootstrap (Bootstrap.java:409) java.lang.NullPointerException  at org.coffeebreak.helper.AttributeBeanXmlConfigHelper.parse (AttributeBeanXmlConfigHelper.java:38) at org.coffeebreak.config.XmlConfigInitServlet.init (XmlConfigInitServlet.java:22) at javax.servlet.GenericServlet (GenericServlet.java:211) at org.apache.catalina.core.StandardWrapper (StandardWrapper.java:1091) at org.apache.catalina.core.StandardWrapper (StandardWrapper.java:925) at org.apache.catalina.core.StandardContext (StandardContext.java:3857) at org.apache.catalina.core.StandardContext (StandardContext.java:4118) at org.apache.catalina.core.ContainerBase (ContainerBase.java:759) at org.apache.catalina.core.ContainerBase (ContainerBase.java:739) at org.apache.catalina.core.StandardHost (StandardHost.java: 524) at org.apache.catalina.startup.HostConfig (HostConfig.java: 788) at org.apache.catalina.startup.HostConfig (HostConfig.java: 677) at org.apache.catalina.startup.HostConfig (HostConfig.java: 473) at org.apache.catalina.startup.HostConfig (HostConfig.java:1102) at org.apache.catalina.startup.HostConfig (HostConfig.java:311) at org.apache.catalina.util.LifecycleSupport (LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase (ContainerBase.java: 1020) at org.apache.catalina.core.StandardHost (StandardHost.java:718) at org.apache.catalina.core.ContainerBase (ContainerBase.java: 1012) at org.apache.catalina.core.StandardEngine (StandardEngine.java: 442) at org.apache.catalina.core.StandardService (StandardService.java:450) at org.apache.catalina.core.StandardServer (StandardServer.java: 683) at org.apache.catalina.startup.Catalina (Catalina.java:537) 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 (Method.java:585) at org.apache.catalina.startup.Bootstrap (Bootstrap.java:271) at org.apache.catalina.startup.Bootstrap (Bootstrap.java:409) 2007-01-14 03:10:33,687 WARN [org.coffeebreak.config.ErrorInitServlet] - Loaded: error.properties INFO: Server startup in 15130 ms
As one can see there's an obvious pathing issue:
/Developer/JavaTools/tomcat/jakarta-tomcat-5 (See http://cat-5.ora-code.com).5.9/bin/WEB-INF/classes/ org/coffeebreak/config/attributes-config.xml
As one can see there's an obvious pathing issu
Where does the tomcat_home/bin/... come from? The "bin" directory is not supposed to be there!
Here's the specific target from my build script which places attributes-config.xml into tomcat_home/WEB-INF/classes/org/ coffeebreak/config:
<target name="static" depends="prepare"> <!-- Copy web files --> <copy todir="${webapp.build.dir}/"> <fileset dir="web" /> </copy> <!-- Copy webapp configuration files --> <copy todir="${webapp.build.dir}/WEB-INF/"> <fileset dir="etc" /> </copy> <!-- Copy library files --> <copy todir="${webapp.build.dir}/WEB-INF/lib/"> <fileset dir="lib" /> </copy> <!-- Copy properties files --> <copy todir="${webapp.build.dir}/WEB-INF/classes/"> <fileset dir="props" /> </copy> <!-- Copy config files --> <copy todir="${webapp.build.dir}/WEB-INF/classes/org/ coffeebreak/config/"> <fileset dir="config" /> </copy> <!-- Copy rules files --> <copy todir="${webapp.build.dir}/WEB-INF/classes/org/ coffeebreak/helper/"> <fileset dir="rules" /> </copy> </target>
Here's my deployment descriptor (web.xml) file:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Coffee Break</display-name> <description> CoffeeBreak Application </description>
<servlet> <servlet-name>CoffeeBreakServlet</servlet-name> <servlet-class>org.coffeebreak.CoffeeBreakServlet</servlet-class> </servlet>
<servlet-mapping> <servlet-name>CoffeeBreakServlet</servlet-name> <url-pattern>/app</url-pattern> </servlet-mapping>
<servlet> <servlet-name>log4j-init</servlet-name> <servlet-class>org.coffeebreak.logging.Log4jInitServlet</ servlet-class> <init-param> <param-name>log4j-init-file</param-name> <param-value>WEB-INF/classes/log4j.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
<servlet> <servlet-name>xml-config</servlet-name> <servlet-class>org.coffeebreak.config.XmlConfigInitServlet</ servlet-class> <init-param> <param-name>xml-config-file</param-name> <param-value>WEB-INF/classes/org/coffeebreak/config/ attributes-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet>
<servlet> <servlet-name>error-init</servlet-name> <servlet-class>org.coffeebreak.config.ErrorInitServlet</ servlet-class> <init-param> <param-name>error-init-file</param-name> <param-value>WEB-INF/classes/error.properties</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
</web-app>
Here's my init servlet for the XML file:
package org.coffeebreak.config;
import org.apache.log4j.Logger ; import org.coffeebreak.helper.AttributeBeanXmlConfigHelper;
import java.io.File ;
import javax.servlet.ServletException ; import javax.servlet.http.HttpServlet ;
public class XmlConfigInitServlet extends HttpServlet { public void init() throws ServletException { String file = getInitParameter("xml-config-file"); File xmlConfigFile = new File(file); if (!xmlConfigFile.exists()) { System.out.println("attributes-config.xml not found, " + xmlConfigFile.getAbsolutePath()); }
try { // Configure Digester from XML ruleset AttributeBeanXmlConfigHelper.parse(xmlConfigFile);
Logger.getLogger(this.getClass()).warn( "Finished parsing the config file."); } catch (Exception ex) { ex.printStackTrace(); } } }
My helper file (which is showing that the rules file is not loading):
package org.coffeebreak.helper;
import java.io.File ; import java.io.FileInputStream ; import java.io.IOException ; import java.io.InputStream ; import java.net.URL ; import java.util.ArrayList ; import java.util.List ;
import org.apache.commons.digester.Digester ; import org.apache.commons.digester.xmlrules.DigesterLoader ; import org.apache.log4j.Logger ; import org.coffeebreak.model.AttributeBean; import org.xml.sax.SAXException ;
public class AttributeBeanXmlConfigHelper {
private static List<AttributeBean> attributeConfigList = null;
public static void parse(File xmlConfigFile) throws IOException, SAXException { URL rules = AttributeBeanXmlConfigHelper.class .getResource("attributes-rules.xml"); Logger.getLogger(AttributeBeanXmlConfigHelper.class).warn( "rules: " + rules); Digester digester = null; try { digester = DigesterLoader.createDigester(rules); } catch (Throwable e) { e.printStackTrace(); e.getCause().printStackTrace(); }
// Push empty List onto Digester's Stack attributeConfigList = new ArrayList<AttributeBean>(); digester.push(attributeConfigList);
// Parse the XML document InputStream input = new FileInputStream(xmlConfigFile); digester.parse(input); }
public static List<AttributeBean> getConfig() { return attributeConfigList; } }
What could I possibly be doing wrong?
Why is it stating this when I start Tomcat:
attributes-config.xml not found, /Developer/JavaTools/tomcat/jakarta- tomcat-5 (See http://cat-5.ora-code.com).5.9/bin/WEB-INF/classes/org/coffeebreak/config/attributes- config.xml
it should be without the bin directory:
/Developer/JavaTools/tomcat/jakarta-tomcat-5 (See http://cat-5.ora-code.com).5.9/WEB-INF/classes/org/ coffeebreak/config/attributes-config.xml
Why is the rules file coming out as null?
2007-01-14 03:10:33,074 WARN [org.coffeebreak.helper.AttributeBeanXmlConfigHelper] - rules: null
WIth thanks!
James Dekker
|
|
 |