Migrar do TOMCAT 7 para JBOSS 7

Olá pessoal,

Tenho uma aplicação em perfeito funcionamento no TOMCAT 7, vou ter que migrar para o JBOSS 7.

Eu uso STRUTS2+Hibernate+JPA, gostaria de saber que configurações deverei fazer no JBOSS e quais ajustes vou precisar fazer em minha aplicação.

Tentei fazer um deploy no JBOSS pela interface web, quando tentei fazer o deploy do war do meu projeto, ficou carregando, carregando… e nada, o fi da mãe nem jogou erro na tela… ficou como se eu n tivesse tentado fazer o upload.

Seguem abaixo meu web.xml, persistance.xml e a lista de libs que estou usando.

Muito obrigado

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>

persistence.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>
  		<properties>
			<property name="hibernate.connection.username" value="****" />
			<property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver" />
			<property name="hibernate.connection.password" value="****" />
			<property name="hibernate.connection.url" value="jdbc:oracle:thin:@*:*:*" />
			<property name="hibernate.connection.dialect" value="org.hibernate.dialect.Oracle9Dialect" />
		  	<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>

as libs que eu uso são:

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
ojdbc14.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

Up…

Consegui configurar o JBOSS para rodar minhas aplicações, ajustei o persistance.xml. Agora está funcionando, porém estou tendo problema com Struts2, sabendo que o projeto foi desenvolvido em cima do TOMCAT e funciona perfeitamente, 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]

Olá , eu vou deploy no war para o JBoss as 7 !

Não sai do “Your request is being processed …” e qndo eu fecho da o seguinte erro :


 
 
 
 
 
 
 
	
7.1
 
	
(0) Messages
	
Profile
	
Runtime
 
 
Logout
Settings
1.1.0.FINAL
 
 
	Server Status
Configuration
JVM
	Subsystem Metrics
Datasources
JPA
Transactions
Web
	Runtime Operations
OSGi
	Deployments
Manage Deployments
Webservices
 
 
	
Deployments
	
	
 
Deployments
	
Name	Runtime Name	Enabled	En/Disable	Remove
financeiro.war
	
financeiro.war
	
	
	
		
1-1 of 1
		
 
Message
	Min/Maximize	Close
 
 
 Wed Dec 11 23:47:58 GMT-200 2013
Unknown error

Unexpected HTTP response: 500

Request
{
    "address" => [("deployment" => "financeiro.war")],
    "operation" => "deploy"
}

Response

Internal Server Error
{
    "outcome" => "failed",
    "failure-description" => {"JBAS014771: Services with missing/unavailable dependencies" => [
        "jboss.naming.context.java.module.financeiro.financeiro.env.mail.Sessionjboss.naming.context.java.jboss.resources.mail.SessionMissing[jboss.naming.context.java.module.financeiro.financeiro.env.mail.Sessionjboss.naming.context.java.jboss.resources.mail.Session]",
        "jboss.naming.context.java.module.financeiro.financeiro.env.jdbc.FinanceiroDBjboss.naming.context.java.jboss.resources.jdbc.FinanceiroDBMissing[jboss.naming.context.java.module.financeiro.financeiro.env.jdbc.FinanceiroDBjboss.naming.context.java.jboss.resources.jdbc.FinanceiroDB]"
    ]},
    "rolled-back" => true
}

O meu caso eu consegui resolver, trocando todas as anotations do Struts2 para configuração no Struts.xml

A respeito do seu caso, quais frameworks vc está utilizando?

Ixiii um montão …

Ja leu o livro “Java para Programação Web” ???

Ele faz um projetinho de financia com vc ultilizando , JavaMail , Ireport, Hibernate 3, JSF , PrimeFaces, Spring Security e JNDI .

E ele faz um SOAP ultilizando um outro Frame doido lá , ele faz um SOAP so para um usuario ficar vendo oq acontece no Financeiro.

No tomcat , ele roda bonito , ja qndo eu vou passa-lo para o Jboss da erro :smiley:

Pq no tomcat eu tinha que colocar as libs dentro do servidor , e eu não sei mecher no Jboss , seria mais para estudos msmo , pois no mercado so pede Jboss com EJB .
Nisso eu qria sair do Desing Patter MVC e cair pro lado EJB … MVC ja ta na veia !

Se poder me ajudar, me indicando livros didaticos para EJB c/ Jboss … seria viável tambem …

Obrigado amigo pela preocupação !

Rapaz, eu desenvolvi um projeto com webservices Rest no JBOSS usando RESTEASY, EJB3 e JPA. Ficou maneríssimo!

Te aconselho a pesquisar no youtube, google… que acredito que essas fontes são as melhores para você conseguir obter um conhecimento prático legal.

Eu consegui assim!

Livros de desenvolvimento, eu não recomendo nenhum, pois ficam obsoletos muito rápido.

Legal amigo , farei isso então !

Nos meus projetos eu ultilizo a arquitetura MVC …

Se eu fosse mudar para EJB como ficaria a arquitetura ??

Repara que é uma ligando a outra , como eu vi num tutorial de Desing Pattern que fica nessa estrutura PADRÃO !

Como seria a ligações no EJB , amigo ???

A minha é assim :
Usuario

@Entity
@Table(name="usuario")
public class Usuario implements Serializable{
 //metodos
}

ManagedBean

[code]@ManagedBean(name=“usuarioBean”)
@RequestScoped
public class UsuarioBean {
private Usuario usuario;

public UsuarioBean(){
usuario = new Usuario();

}

public String salvar(){
FacesContext fc = FacesContext.getCurrentInstance();
UsuarioRN usuarioRN = new UsuarioRN();
usuarioRN.salvar(this.usuario);

	return "paginax";
}

}
[/code]

Regra de Negocio

[code] // Ficam a regra de persistencia, como deveria salvar e se pode salvar
// Exemplo não pode salvar usuario com o msmo login, ou nao pode deletar usuario administrador
public class UsuarioRN{

private UsuarioDAO usuarioDAO;

public UsuarioRN() {
	this.usuarioDAO = DAOFactory.criarUsuarioDAO();
}

public void salvar(Usuario usuario){

	return this.usuarioDAO.salvar(usuario);
}

}[/code]

Interface de UsuarioDAO

[code]public interface UsuarioDAO {

public void salvar(Usuario usuario);

{[/code]

UsuarioDAOHibernate – realmente aonde persiste

[code]public class UsuarioDAOHibernate implements UsuarioDAO {

private Session session;

public void setSession(Session session) {
	this.session = session;
}

@Override 
public void salvar(Usuario usuario) {
	this.session.save(usuario);
}

}[/code]

E a DAOFactory

[code]public class DAOFactory {

public static UsuarioDAO criarUsuarioDAO(){
	UsuarioDAOHibernate usuarioDAO = new UsuarioDAOHibernate();
	usuarioDAO.setSession(HibernateUtil.getSessionFactory().getCurrentSession());
	return usuarioDAO;
}

}[/code]

No exemplo que eu comentei acima.

Eu usei o RestEasy como VIEW, EJB 3 Controller e JPA como Modelo.

Normalmente EJB é usado apenas como controller.

Como estamos fugindo do assunto já foi resolvido, vou finalizar o tópico.

Qualquer coisa abre um outro tópico que eu te dou uma moral.

Abraço!