init-params in web.xml are not loaded (Tomcat 4)
843840Aug 22 2002 — edited Oct 17 2002Hello all...
I register a servlet in webapps/<my-servlet>/WEB-INF/web.xml file, and pass 1 <init-param> tag. The file gets parsed (I know because when I made errors tomcat complained during initialization). However, when in the init method of the servlet I try to access this parameter, its not there. In fact, the servlet has NO init params at all.
=================================================
I have the following web.xml file
<?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/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>XServlet</servlet-name>
<servlet-class>com.fxcm.xml.xengine.xdas.XServlet</servlet-class>
<init-param>
<param-name>xengine.configFile</param-name>
<param-value>c:/projects/re/das.config/config.xng</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>XServlet</servlet-name>
<url-pattern>/xservlet</url-pattern>
</servlet-mapping>
</web-app>
=======================================================
I have the following servlet
/*
* XServlet.java
*
* Created on May 6, 2002, 1:17 PM
*/
package com.fxcm.xml.xengine.xdas;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletConfig;
import java.util.Enumeration;
import com.fxcm.xml.xengine.XEngine;
public class XServlet extends HttpServlet{
/** Initiates new XServlet */
public void init(ServletConfig config)
throws ServletException
{
for (Enumeration e = config.getInitParameterNames(); e.hasMoreElements();){
//This statement never gets printed because the loop never enters here since there are no init parameters
System.out.println(e.nextElement());
}
super.init(config);
String str = config.getInitParameter("xengine.configFile");
System.out.println(str);
XEngine.init(str.trim()); //This line throws NullPointer, because str is null since there are no initParameters.
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
// res.setContentType( );
System.out.println("Got post request in XServlet");
PrintWriter out = res.getWriter();
out.println(XEngine.process(req.getInputStream()));
out.flush();
out.close();
}
}
================================================================
I get the follwoing error in the browser:
type Exception report
message Internal Server Error
description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
at com.fxcm.xml.xengine.xdas.XServlet.init(Unknown Source)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:918)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:655)
at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:400)
......
Please help.
Thank you,
Elana