Deploy de projeto vraptor .war

7 respostas
C

Boa tarde pessoal,
Tenho uma aplicação vraptor que funciona bem quando faço um deploy “explodido”.
Mas quando faço o deploy compactado “.war” não funciona, dá erro 404.
Eu percebi que quando é compactado ele não escaneia as anotações, só quando é explodido.
Segue log:

===========
explodido

2014-01-31 15:55:55 INFO BasicConfiguration:71 - Using class br.com.caelum.vraptor.ioc.guice.GuiceProvider as Container Provider 2014-01-31 15:55:55 INFO BasicConfiguration:142 - br.com.caelum.vraptor.scanning = null 2014-01-31 15:55:55 INFO WebAppBootstrapFactory:73 - Dynamic WebAppBootstrap found. 2014-01-31 15:55:56 INFO DefaultConverters:42 - Registering bundled converters 2014-01-31 15:55:56 INFO LinkToHandler:55 - Registering linkTo component 2014-01-31 15:55:56 INFO DefaultRouteBuilder:180 - /painel/lista [ALL] -> PainelController.lista() 2014-01-31 15:55:56 INFO DefaultRouteBuilder:180 - / [GET] -> IndexController.index() 2014-01-31 15:55:56 INFO DefaultRouteBuilder:180 - /clientService/obterCiaUsuario [ALL] -> ClientService.obterCiaUsuario(String, String, String) 2014-01-31 15:55:56 INFO DefaultRouteBuilder:180 - /clientService/obterSiglaCiaUsuario [ALL] -> ClientService.obterSiglaCiaUsuario(Long, String, String, String) 2014-01-31 15:55:56 INFO DefaultRouteBuilder:180 - /clientService/montaPainel [ALL] -> ClientService.montaPainel(Painel, String) 2014-01-31 15:55:56 INFO DefaultRouteBuilder:180 - /clientService/montaPainelPrograma [ALL] -> ClientService.montaPainelPrograma(Painel, String) 2014-01-31 15:55:56 INFO DefaultRouteBuilder:180 - /clientService/obterPainelFaturamentoAno [ALL] -> ClientService.obterPainelFaturamentoAno(Painel, String) 2014-01-31 15:55:56 INFO DefaultRouteBuilder:180 - /login [GET] -> LoginController.login() 2014-01-31 15:55:56 INFO DefaultRouteBuilder:180 - /autenticar [POST] -> LoginController.autenticar(Usuario) 2014-01-31 15:55:56 INFO DefaultRouteBuilder:180 - /logout [GET] -> LoginController.logout() 2014-01-31 15:55:56 INFO VRaptor:114 - VRaptor 3.5.3 successfuly initialized

=============
compactado .war

2014-01-31 16:05:35 INFO BasicConfiguration:71 - Using class br.com.caelum.vraptor.ioc.guice.GuiceProvider as Container Provider 2014-01-31 16:05:35 INFO BasicConfiguration:142 - br.com.caelum.vraptor.scanning = null 2014-01-31 16:05:35 INFO WebAppBootstrapFactory:73 - Dynamic WebAppBootstrap found. 2014-01-31 16:05:36 INFO DefaultConverters:42 - Registering bundled converters 2014-01-31 16:05:36 INFO LinkToHandler:55 - Registering linkTo component 2014-01-31 16:05:36 INFO VRaptor:114 - VRaptor 3.5.3 successfuly initialized

=============
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_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>painel</display-name> <filter> <filter-name>vraptor</filter-name> <filter-class>br.com.caelum.vraptor.VRaptor</filter-class> </filter> <filter-mapping> <filter-name>vraptor</filter-name> <url-pattern>/*</url-pattern> <dispatcher>FORWARD</dispatcher> <dispatcher>REQUEST</dispatcher> </filter-mapping> </web-app>

Alguém já passou por isso ou sabe como resolver?
Obrigado
Abraço

7 Respostas

L

Como vc gerou o .war?

C

Gerei de duas formas, utilizando maven e o export war do eclipse.
Os dois têm a mesma extrutura de diretórios, e os dois funcionam explodidos, mas não funcionam com o .war.
Quando tento utilizar:

<context-param> <param-name>br.com.caelum.vraptor.packages</param-name> <param-value>br.com.uss.painel.controller</param-value> </context-param>

recebo o erro:
Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.

Utilizando getter e setter na classe que acusa o erro, funciona, mas quando executo uma action no controller a classe injetada está nula e recebo um NullPointerException

[]'s

L

Pode postar a stacktrace desse erro?

C

Posso sim, na segunda assim que chegar no trabalho eu posto.
Obrigado pela ajuda.
[]'s

C

Olá Lucas, segue erro quando utlilizo no web.xml:

<context-param>    
   <param-name>br.com.caelum.vraptor.packages</param-name>    
   <param-value>br.com.uniconsult.painel.controller</param-value>    
</context-param>

E o construtor para fazer injeção:

package br.com.uniconsult.painel.business;

import javax.xml.rpc.ServiceException;

import br.com.caelum.vraptor.ioc.Component;
import br.com.uniconsult.painel.client.ClientService;
import br.com.uniconsult.painel.model.Usuario;

@Component
public class LoginBusiness {
	
	private ClientService clientService;
	
	public LoginBusiness(ClientService clientService) {
		this.clientService = clientService;
	}
	
	public Usuario autenticar(String user, String senha, String url) {
		Usuario usuario = new Usuario();
    	Long idCia = new Long(0);
    	String siglaCia = "";
    	try {
    		
    		idCia = clientService.obterCiaUsuario(user.toUpperCase(), senha, url);
			siglaCia = clientService.obterSiglaCiaUsuario(idCia, user.toUpperCase(), senha, url);
		} catch (ServiceException e) {
			e.printStackTrace();
		}
    	if (!siglaCia.equals(""))
        {
        	usuario.setUsuario(user.toUpperCase());
        	usuario.setSenha(senha);
        	usuario.setIdCia(idCia);
        	usuario.setSiglaCia(siglaCia);
        	usuario.setUrlWS(url);
            return usuario;
        }
        return null;
    }
}
2014-02-03 09:47:25 INFO  BasicConfiguration:71 - Using class br.com.caelum.vraptor.ioc.guice.GuiceProvider as Container Provider
2014-02-03 09:47:25 INFO  BasicConfiguration:142 - br.com.caelum.vraptor.scanning = null
2014-02-03 09:47:25 INFO  WebAppBootstrapFactory:73 - Dynamic WebAppBootstrap found.
<03/02/2014 09h47min25s BRST> <Error> <HTTP> <BEA-101165> <Could not load user defined filter in web.xml: br.com.caelum.vraptor.VRaptor.
com.google.inject.CreationException: Guice creation errors:

1) Could not find a suitable constructor in br.com.uniconsult.painel.business.LoginBusiness. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
  at br.com.uniconsult.painel.business.LoginBusiness.class(LoginBusiness.java:16)
  while locating br.com.uniconsult.painel.business.LoginBusiness
    for parameter 2 at br.com.uniconsult.painel.controller.LoginController.<init>(LoginController.java:26)
  at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)

1 error
	at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:435)
	at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:154)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106)
	at com.google.inject.Guice.createInjector(Guice.java:95)
	at com.google.inject.Guice.createInjector(Guice.java:83)
	Truncated. see log file for complete stacktrace
>

Quando utilizo getter e setter e comento o construtor:

2014-02-03 09:53:33 INFO  BasicConfiguration:71 - Using class br.com.caelum.vraptor.ioc.guice.GuiceProvider as Container Provider
2014-02-03 09:53:33 INFO  BasicConfiguration:142 - br.com.caelum.vraptor.scanning = null
2014-02-03 09:53:33 INFO  WebAppBootstrapFactory:73 - Dynamic WebAppBootstrap found.
2014-02-03 09:53:33 INFO  DefaultConverters:42 - Registering bundled converters
2014-02-03 09:53:33 INFO  LinkToHandler:55 - Registering linkTo component
2014-02-03 09:53:34 INFO  DefaultRouteBuilder:180 - /painel/lista                                     [ALL] -> PainelController.lista()
2014-02-03 09:53:34 INFO  DefaultRouteBuilder:180 - /                                                 [GET] -> IndexController.index()
2014-02-03 09:53:34 INFO  DefaultRouteBuilder:180 - /login                                            [GET] -> LoginController.login()
2014-02-03 09:53:34 INFO  DefaultRouteBuilder:180 - /autenticar                                       [POST] -> LoginController.autenticar(Usuario)
2014-02-03 09:53:34 INFO  DefaultRouteBuilder:180 - /logout                                           [GET] -> LoginController.logout()
2014-02-03 09:53:34 INFO  DefaultRouteBuilder:180 - /clientService/obterCiaUsuario                    [ALL] -> ClientService.obterCiaUsuario(String, String, String)
2014-02-03 09:53:34 INFO  DefaultRouteBuilder:180 - /clientService/obterSiglaCiaUsuario               [ALL] -> ClientService.obterSiglaCiaUsuario(Long, String, String, String)
2014-02-03 09:53:34 INFO  DefaultRouteBuilder:180 - /clientService/montaPainel                        [ALL] -> ClientService.montaPainel(Painel, String)
2014-02-03 09:53:34 INFO  DefaultRouteBuilder:180 - /clientService/montaPainelPrograma                [ALL] -> ClientService.montaPainelPrograma(Painel, String)
2014-02-03 09:53:34 INFO  DefaultRouteBuilder:180 - /clientService/obterPainelFaturamentoAno          [ALL] -> ClientService.obterPainelFaturamentoAno(Painel, String)
2014-02-03 09:53:34 INFO  VRaptor:114 - VRaptor 3.5.3 successfuly initialized
Funciona mas obtenho um erro quando executo uma action na classe:
POST /painel/autenticar HTTP/1.1
Connection: keep-alive
Content-Length: 79
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://localhost:7001
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://localhost:7001/painel/login
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4,es;q=0.2,gl;q=0.2
Cookie: ADMINCONSOLESESSION=k2BqSvBfQQySQvybpnldqQzjvQFjk3s4mV204WnJFTqvqhBnKm3Z!-[telefone removido]; JSESSIONID=8bcBSvDZQSwZk2C52Nfn24T47xwwTgbFlNcfPyTJ2bYpfKyl1rTJ!-[telefone removido]

]] Root cause of ServletException.
java.lang.NullPointerException
	at br.com.uniconsult.painel.business.LoginBusiness.autenticar(LoginBusiness.java:25)
	at br.com.uniconsult.painel.controller.LoginController.autenticar(LoginController.java:63)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	Truncated. see log file for complete stacktrace
>

Valeu pela ajuda.
[]´s

C

Segue meu 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_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>painel</display-name> <context-param> <param-name>br.com.caelum.vraptor.packages</param-name> <param-value>br.com.uniconsult.painel.controller</param-value> </context-param> <filter> <filter-name>vraptor</filter-name> <filter-class>br.com.caelum.vraptor.VRaptor</filter-class> </filter> <filter-mapping> <filter-name>vraptor</filter-name> <url-pattern>/*</url-pattern> <dispatcher>FORWARD</dispatcher> <dispatcher>REQUEST</dispatcher> </filter-mapping> </web-app>

Estou usando weblogic 10.3.6 e vraptor 3.5.3

L

Bem estranho… volte o construtor e dê um clean no projeto e no servidor.

Criado 31 de janeiro de 2014
Ultima resposta 3 de fev. de 2014
Respostas 7
Participantes 2