ServletException ao chamar action

Estou tendo o seguinte problema usando Struts + Tomcat:

Tenho uma action chamada LogonAction.java
Tenho um form chamado LogonForm.java
Quando eu chamo a action a partir de um form no meu index.jsp
aparece a seguinte exception:

javax.servlet.ServletException: Servlet.init() for servlet action threw exception 
   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
   org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) 
   org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
   org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
   org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
   org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
   java.lang.Thread.run(Thread.java:534) 


root cause 


java.lang.NullPointerException 
   org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:705) 
   org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:670) 
   org.apache.struts.action.ActionServlet.init(ActionServlet.java:342) 
   javax.servlet.GenericServlet.init(GenericServlet.java:211) 
   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
   org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) 
   org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
   org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
   org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
   org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
   java.lang.Thread.run(Thread.java:534) 

Esse é o mapeamento do form e da action no struts-config.xml

<form-bean name="LogonForm" type="gov.itaipu.gti.struts.forms.LogonForm"> 
</form-bean> 

<action path  = "/LogonAction" 
          name="LogonForm" 
          validate = "false" 
            type  = "gov.itaipu.gti.struts.action.LogonAction" 
            input = "index.jsp"> 
            <forward name="OK" path="/pages/buscapornome"/> 
            <forward name="ERROR" path="/pages/error.jsp"/> 
</action> 

E essa é a pagina de onde eu chamo a action

<%@ page language="java" %> 
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> 
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> 
<html> 
<head> 
<title>Guia Telefônico Interno</title> 
</head> 
<body> 
   <html:form action="/LogonAction"> 
      nada:     <html:text     property="str" size="11"/></p> 
          
            <html:submit value="Inserir"   /> 
   </html:form> 

</body> 
</html>

Alguém tem idéia de que pode estar causando a null pointer exception que não está permitindo a incialização da servlet que vai executar a action… ???

valews

Percebeu esse espaço aqui ó:

&lt;action path = "/LogonAction" ....&gt;

Deixe assim:

&lt;action path="/LogonAction" ....&gt;

Parsers XML não costumam aceitar erros.

Eu retirei todos os espaços dos mapeamentos e o erro continua

não sei se tem algo a ver… mas qdo eu faço o deploy da aplication o Tomcat da um throw da seguinte exception:

SEVERE: IOException while saving persisted sessions: java.io.FileNotFoundException: C:\Tomcat\work\Catalina\localhost\gti\SESSIONS.ser (O sistema nÒo pode encontrar o caminho especificado)
java.io.FileNotFoundException: C:\Tomcat\work\Catalina\localhost\gti\SESSIONS.ser (O sistema nÒo pode encontrar o caminho especificado)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
        at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:511)
        at org.apache.catalina.session.StandardManager.unload(StandardManager.java:485)
        at org.apache.catalina.session.StandardManager.stop(StandardManager.java:687)
        at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4496)
        at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:952)
        at org.apache.catalina.core.StandardHostDeployer.remove(StandardHostDeployer.java:723)
        at org.apache.catalina.core.StandardHost.remove(StandardHost.java:971)
        at org.apache.catalina.startup.HostConfig.checkContextLastModified(HostConfig.java:840)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1085)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:327)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.core.StandardHost.backgroundProcess(StandardHost.java:800)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1619)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1628)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1608)
        at java.lang.Thread.run(Thread.java:534)
02/06/2005 07:39:58 org.apache.catalina.session.StandardManager stop
SEVERE: Exception unloading sessions to persistent storage
java.io.FileNotFoundException: C:\Tomcat\work\Catalina\localhost\gti\SESSIONS.ser (O sistema nÒo pode encontrar o caminho especificado)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
        at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:511)
        at org.apache.catalina.session.StandardManager.unload(StandardManager.java:485)
        at org.apache.catalina.session.StandardManager.stop(StandardManager.java:687)
        at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4496)
        at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:952)
        at org.apache.catalina.core.StandardHostDeployer.remove(StandardHostDeployer.java:723)
        at org.apache.catalina.core.StandardHost.remove(StandardHost.java:971)
        at org.apache.catalina.startup.HostConfig.checkContextLastModified(HostConfig.java:840)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1085)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:327)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.core.StandardHost.backgroundProcess(StandardHost.java:800)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1619)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1628)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1608)
        at java.lang.Thread.run(Thread.java:534)

Eu li sobre isso na net, e me falaram que isso ocorre quando o Tomcat não consegue serializar os objetos da sessão (nesse arquivo SESSIONS.SER) talvez ele esteja tentando usar um objeto da sessão, não o encontra, e lança a nullpointerexception. E eu já instalei o Tomcat novamente na minha estação. o Erro persiste. E o usuário que eu uso para iniciar o Tomcat tem privilégios de leitura/escrita em todas as pastas do sistema.

Mas ele chega a inicializar?

Ele inicializa.

Mas acabei de resolver meu problema.
Era problema de configuração mesmo.
Revisei todos os arquivos (struts-config, web, validation, etc)
retirei espaços e efetuai algumas outras alterações.

Típica falta de atenção con arquivos de configuração.
Acho que essa exception do Tomcat não chega a comprometer o seu funcionamento.

mto obrigado