Erro HTTP Status 500 - struts [RESOLVIDO]

Boa tarde pessoal, estou iniciando com struts (utilizando versao 2.2.3) e seguindo algumas video aulas…
Depois de um dia todo perdido com a configuração, agora me deparei com um erro:


HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

este trecho chamou mto a atenção e acho que pode ser a chave (ou nao… =P).

root cause

java.lang.StackOverflowError
sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate(BaseCalendar.java:415)
sun.util.calendar.AbstractCalendar.getCalendarDate(AbstractCalendar.java:147)
sun.util.calendar.Gregorian.getCalendarDate(Gregorian.java:55)
sun.util.calendar.Gregorian.getCalendarDate(Gregorian.java:59)
sun.util.calendar.Gregorian.getCalendarDate(Gregorian.java:19)
java.util.Date.normalize(Date.java:1176)
java.util.Date.toString(Date.java:1010)
java.lang.String.valueOf(String.java:2826)
java.lang.StringBuilder.append(StringBuilder.java:115)
struts.HelloStruts.execute(HelloStruts.java:27)
struts.HelloStruts.execute(HelloStruts.java:29)
struts.HelloStruts.execute(HelloStruts.java:29)
struts.HelloStruts.execute(HelloStruts.java:29)

aqui segue como se fosse um loop<<<<<<

Postarei os codigos para melhor visualização do problema…

web.xml (mostrando apenas o mapeamento)

[code]<?xml version="1.0" encoding="UTF-8"?>

Portal

 <filter>
        <filter-name>struts2</filter-name> 
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
 </filter>
<filter-mapping>
        <filter-name>struts2</filter-name> 
        <url-pattern>/*</url-pattern> 
</filter-mapping>

[/code]

struts.xml

[code]<?xml version="1.0" encoding="UTF-8" ?>

<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />

<package name="default" extends="struts-default">
    <default-action-ref name="home" />
    
    <action name="home">
        <result>/WEB-INF/pages/home.jsp</result>
    </action>
    <action name="hello" class="struts.HelloStruts">            
        <result>/WEB-INF/pages/testeStruts.jsp</result>            
    </action>
</package>    

[/code]

HelloStruts.java

[code]package struts;

import com.opensymphony.xwork2.ActionSupport;

public class HelloStruts extends ActionSupport {

private String mensagem = "Lazaro Diogo";    

public String getMensagem() {
    return mensagem;
}

@Override
public String execute() throws Exception{
    
    mensagem += " - " + new java.util.Date();
    
    return execute();
}

}[/code]

Bem a partir daí, criei um link em index.jsp apontando para hello.action:

<a href="hello.action" >Teste Struts</a><br>

e na pagina testeStruts.jsp o seguinte para mostrar a mensagem

[code]

Teste Struts

[/code]

Estou usando Windows 7, netbeans com apache tomcat.
Creio que nao é problema com as bibliotecas mas listarei as que estou utilizando (no lugar dos numeros de versao vo colocar X pra facilitar ake… xD ):

commons-fileupload-X commons-io-X commons-lang-X commons-logging-X javassist-X ognl-X struts2-core-X xwork-core-X freemarker-X

É isso, desculpem se estou me precipitando em alguma coisa mas perdi muito tempo com isso e preciso mesmo dar continuidade aos estudos.
Desde já agradeço todos pela atenção.

Toda vez que você ver o erro StackOverflow é pq vc tem um método chamando outro e nunca conseguindo sair

[code] @Override
public String execute() throws Exception{

    mensagem += " - " + new java.util.Date();  
      
    return execute();  
}  [/code]

Seu erro está aí.

Muito Obrigado jakefrog,

Ok, sem o metodo execute(), obtive a mensagem como retorno na pagina…
Mas não entendo porque o codigo está rigorosamente igual ao video e lá funcionou.

Entendi parcialmente o problema do erro ser apresentado por haver um metodo chamando outro, isso que dizer que o metodo execute() neste caso nao pode retornar execute()?
Pode me ajudar esclarecer um pouco?

No caso, seu método vai entrar em loop. Pois ele sempre vai se executar ao finalizar.

No caso do JSF a gente retorna uma String, ou então NULL para se ficar no mesmo lugar.

Não sei como seria no caso do struts. Lembro que no struts 1.2 você retorna uma String indicando para qual tela você vai.

Certo… Obrigado.