Struts 2 funciona no TOMCAT 7 e não funciona no JBOSS 7

12 respostas
G

Consegui configurar o JBOSS para rodar minhas aplicações, ajustei o persistance.xml. Agora está funcionando… Porém ,estou tendo problema com Struts2 só no JBOSS que minhas ACTIONS não estão funcionando…

Alguem me da um help ai pls.

Log do JBOSS 7

16:11:21,113 WARN  [org.apache.struts2.dispatcher.Dispatcher] (http--52.0.20.97-8080-1) Could not find action or result: There is no Action mapped for namespace / and action name testeAction. - [unknown location]
	at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:178) [xwork-core-2.1.6.jar:]
	at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61) [struts2-core-2.1.8.1.jar:]
	at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39) [struts2-core-2.1.8.1.jar:]
	at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47) [xwork-core-2.1.6.jar:]
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478) [struts2-core-2.1.8.1.jar:]
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.1.8.1.jar:]
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) [struts2-core-2.1.8.1.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
	at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_03]

Action

package action;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

@Action(value = "testeAction", results = { @Result(name = "ok", location = "index.jsp") })
public class TesteAction {

	private String status;
	
	
public String execute(){
	
	EntityManagerFactory factory = Persistence
			.createEntityManagerFactory("OracleJPA");
	EntityManager em = factory.createEntityManager();
	
	status = em.createNativeQuery("select nome from mon_job_responsavel where id=7").getResultList().get(0).toString();
	System.out.println(status);
	em.close();
	
	
	return "ok";
}

public String getStatus() {
	return status;
}

	
}

struts.xml

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="default" extends="struts-default">
		<interceptors>
			<interceptor name="autorizador" class="interceptor.AutorizadorInterceptor"/>
			<interceptor-stack name="seguranca">
				<interceptor-ref name="autorizador" />
				<interceptor-ref name="defaultStack" />
			</interceptor-stack>
		</interceptors>
		<global-results>
			<result name="naoLogado">/WEB-INF/content/acesso/formulario-login.jsp</result>
		</global-results>
		<action name="formSocio">
			<result>/WEB-INF/content/formulario-socio.jsp</result>
		</action>
		<action name="confExclusao">
			<result>/WEB-INF/content/confexclusao.jsp</result>
		</action>
		<action name="formNovoUsuario">
			<result>/WEB-INF/content/formulario-novo-usuario.jsp</result>
		</action>
	</package>
</struts>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>MonitorJobs</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <session-config>
    <session-timeout>15</session-timeout>
  </session-config>
  <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>
</web-app>

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
${status}
</body>
</html>

persistance.xml

<persistence version="1.0"
	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
	<persistence-unit name="OracleJPA"
		transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>java:jboss/datasources/OracleDS</jta-data-source> 
  		<properties>  		
	  	<property name="hibernate.hbm2ddl.auto" value="update" />
		<property name="hibernate.show_sql" value="false" />
		<property name="hibernate.format_sql" value="false" />
		</properties>
	</persistence-unit>
</persistence>

Libs usadas no projeto

antlr-2.7.6.jar
c3p0-0.9.1.jar
cglib-2.2.jar
commons-collections-3.1.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.0.4.jar
dom4j-1.6.1.jar
freemarker-2.3.15.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-testing.jar
hibernate3.jar
infinispan-core-4.2.1.CR1.jar
javassist-3.12.0.GA.jar
jbosscache-core-3.2.1.GA.jar
jstl-api-1.2.jar
jstl-impl-1.2.jar
jta-1.1.jar
log4j-1.2.16.jar
mysql-connector-java-5.1.18-bin.jar
ognl-2.7.3.jar
ojdbc6.jar
oscache-2.1.jar
proxool-0.8.3.jar
slf4j-api-1.6.1.jar
struts2-convention-plugin-2.1.8.1.jar
struts2-core-2.1.8.1.jar
swarmcache-1.0RC2.jar
xwork-core-2.1.6.jar

12 Respostas

R

Tente inserir uma barra antes.

@Action(value = "/testeAction", results = { @Result(name = "ok", location = "/index.jsp") })

Caso não funcione, remova anotação e utilize no XML, para caráter de teste.

<action name="teste"> <result>/index.jsp</result> </action>
acesse[size=11] [color=red]localhost:8080/contextWeb/teste.action[/color][/size] veja se carrega!

L

Talvez o problema seja o VFS do JBoss. Ja tive problema parecido com o Spring e para ele funcionar corretamente no JBoss precisei adicionar o jar do Snowdrop.

Para te explicar o problema no Spring - a classe responsável por procurar classes anotadas com esteriótipos validos não entende o vfs(a url do arquivo começa com vfs:file:// se não me engano, e da erro) e consequentemente não acha nada.

Testa mapear a action no XML.

G

rafaduka:
Tente inserir uma barra antes.

@Action(value = "/testeAction", results = { @Result(name = "ok", location = "/index.jsp") })

Caso não funcione, remova anotação e utilize no XML, para caráter de teste.

<action name="teste"> <result>/index.jsp</result> </action>
acesse[size=11] [color=red]localhost:8080/contextWeb/teste.action[/color][/size] veja se carrega!

rafaduka,

Usando XML funcionou! a Action chamou o jsp. Porém, preciso que seja feito por anotação, toda a implementação desse e de outros actions são baseados em anotação. :frowning:

G

lsjunior:
Talvez o problema seja o VFS do JBoss. Ja tive problema parecido com o Spring e para ele funcionar corretamente no JBoss precisei adicionar o jar do Snowdrop.

Para te explicar o problema no Spring - a classe responsável por procurar classes anotadas com esteriótipos validos não entende o vfs(a url do arquivo começa com vfs:file:// se não me engano, e da erro) e consequentemente não acha nada.

Testa mapear a action no XML.

lsjunior,

No XML funcionou. Porém, preciso usar anotação devido a todos os projetos existentes terem sido desenvolvidos dessa forma :frowning:

J

Olá, para resolver os problemas incialmente utilize o Tattletale. JBoss TattleTale é um projeto iniciado em jboss.org que gera relatórios sobre as classes e dependências de um jar/war/ear e é utilizando em grande escala no mundo “enterprise” JBoss.

Veja o tutorial abaixo:

http://www.mastertheboss.com/jboss-application-server/216-jboss-client-jar.html

[]s

R

Tente inserir esta anotação:

@ResultPath("/WEB-INF/jsps")

[size=10]The ResultPath annotation allows applications to change the location where results are stored.[/size]
Anotação @ResultPath permite que as aplicações troquem o local onde os results são armazenados.

G

rafaduka:
Tente inserir esta anotação:

@ResultPath("/WEB-INF/jsps")

[size=10]The ResultPath annotation allows applications to change the location where results are stored.[/size]
Anotação @ResultPath permite que as aplicações troquem o local onde os results são armazenados.

rafaduka

Sobre essa anotação, onde devo colocar? No meu Action não funciona, pois o mesmo nem é carregado usando anotação (NO JBOSS).

type Status report

message There is no Action mapped for namespace / and action name testeAction.

description The requested resource (There is no Action mapped for namespace / and action name testeAction.) is not available.

Lembrando que, no Tomcat 7 essa mesma configuração funciona redondinha…

G

jmag:
Olá, para resolver os problemas incialmente utilize o Tattletale. JBoss TattleTale é um projeto iniciado em jboss.org que gera relatórios sobre as classes e dependências de um jar/war/ear e é utilizando em grande escala no mundo “enterprise” JBoss.

Veja o tutorial abaixo:

http://www.mastertheboss.com/jboss-application-server/216-jboss-client-jar.html

[]s

jmag

Tentei usar o Tattletale, mas não consegui entender direito sobre a configuração dele junto ao JBOSS 7… Teria como você tentar me explicar ?

Muito Obrigado

G

Devido ao tempo estar curto para que possa pesquisar sobre o assunto, resolvi migrar tudo para XML.

Se por acaso alguem souber o que precisa ser feito para anotação funcionar no JBOSS 7, posta aqui, ou me whispa… sei la… fala comigo, por favor!

VLW

C

Iai amigo

você conseguiu resolver esse problema?

comigo ta acontecendo o mesmo :frowning:

G

Com annotation não rolou, precisei migrar tudo para XML.

C

entendi…

Criado 27 de março de 2012
Ultima resposta 8 de fev. de 2013
Respostas 12
Participantes 5