VRaptor 3.5.0 Lançado!

103 respostas
L

Olá pessoal,

A versão 3.5.0 do VRaptor foi lançada, com uma limpeza grande da base de código e várias contribuições da comunidade.

Limpezas mais importantes:

  • Hibernate Validator 3 parou de ser suportado, use a especificação Bean Validations (ex hibernate validator 4)
  • O suporte ao Hibernate e JPA foram migrados para projetos externos:
    http://github.com/caelum/vraptor-hibernate e
    http://github.com/caelum/vraptor-jpa
    ambos publicados no maven. Então se você usava o pacote do hibernate ou da jpa no web.xml, precisa adicionar essa
    dependência.
  • Remoção do proxifier de CGLib, agora a implementação principal é a do javassist.

Adições mais importantes:

  • Suporte inicial a validação de métodos (Bean Validation 1.1):
public void metodo(@NotNull String param) {..} // valida se param != null
  • Suporte ao verbo OPTIONS (por douglasrodrigo) e PATCH (por nykolaslima).
  • Melhoria da anotação @Load, onde agora não é mais necessário que o @Id possua o nome fixo ID: basta anotar com @Id o campo da chave primaria.

Changelog completa: http://vraptor.caelum.com.br/pt/docs/changelog-pt/
Downloads: https://code.google.com/p/vraptor3/downloads/list

Obrigado a todos que contribuiram e mandaram feedback
Até a próxima.

103 Respostas

L

Não uso VRaptor ainda, mas estou prestes a começar a usa-lo com bootstrap.

Show de bola o lançamento!

Z

Beleza!

Estou acompanhando o andamento do VRaptor a algum tempo… Pretendo implementa-lo em breve…

Como anda a integração com CDI?

D

Que legal! Parabéns a todos que participam no projeto!

Fiz a mudança para a versão 3.5.0 aqui e estou com erro, pois não acha mais duas classes:

import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

Usamos isso para buscar alguns dados da request:

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

Como devo fazer agora?

Sugestão: caso haja muitas mudanças, confeccionar um guia de migração.

Obrigado e até mais,

L

Seria legal também inserir a data/hora que foi lançado cada versão do changelog, para que possamos ver como está o progresso das atualizações.
http://vraptor.caelum.com.br/pt/docs/changelog-pt/

E

ótima notícia,
sei que não é possível, mas vou deixar registrado, adoraria que atualizassem o guava utilizado

F

danilomunoz:
Que legal! Parabéns a todos que participam no projeto!

Fiz a mudança para a versão 3.5.0 aqui e estou com erro, pois não acha mais duas classes:

import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

Usamos isso para buscar alguns dados da request:

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

Como devo fazer agora?

Sugestão: caso haja muitas mudanças, confeccionar um guia de migração.

Obrigado e até mais,

O Container de injeção padrão agora é o Guice, não mais o Spring. Você deve ter que adicionar as dependências manualmente.

M

Olá Pessoal,

Primeiramente parabéns a equipe e todos os contribuintes dessa nova versão, o Vraptor é resultado de um excelente trabalho realizado em equipe.

Tentei migrar um projeto do Vraptor 3.4.1 para o 3.5.0 e não obtive sucesso, tive problemas em configurar o plugin de persistência. Na verdade nem o encontrei, agora que li esse post que vi os links do Git para “vraptor-hibernate” e “vraptor-jpa”, acho que nesse ponto a documentação ficou falha, pois deveria ter os devidos links ou como citado anteriormente, deveria ter um manual de migração.

Enquanto estava procurando, li em alguns posts dizendo que esses plugins não haviam sido publicados no repositório do Maven, isso realmente aconteceu ?

Att,

A

Lucas eu contribui com uma alteração para retornar o tamanho do arquivo do upload (classe UploadedFile, metodo getSize()), isso entrou no release? Estou usando uma versão que compilei localmente na minha maquina o que está me causando algumas chatices…

Há previsão para atualizem a versão usada do Guava?

E parabéns à equipe e a todos que contribuiram! Excelente!

G

Está explicado no changelog (http://vraptor.caelum.com.br/pt/docs/changelog-pt/). Mas a documentação realmente pode ser melhorada. Pull requests e comentários são bem vindos caso você ache pontos a melhorar.

Já estão todos publicados: http://repo1.maven.org/maven2/br/com/caelum/vraptor/

Está sim na release.

Já foi atualizado para a versão 11. Não dá para usar mais nova no core do vraptor porque ele deve ser compatível com JDK 5. Porém se você quiser pode tranquilamente usar versões mais novas no teu projeto. Eu tenho feito isso em alguns projetos meus que rodam em JDK 7.

G

leandrokjava:
Seria legal também inserir a data/hora que foi lançado cada versão do changelog, para que possamos ver como está o progresso das atualizações.
http://vraptor.caelum.com.br/pt/docs/changelog-pt/

Para saber data/hora de cada commit, autor, etc você pode acompanhar pelo github: https://github.com/caelum/vraptor/commits/master

C

Já esta no repositorio do maven? coloquei a versão 3.5.0, o maven baixou a ultima q era a 3.4.1

G

Sim, está no maven.

<dependency> <groupId>br.com.caelum</groupId> <artifactId>vraptor</artifactId> <version>3.5.0</version> </dependency>

L

danilomunoz,

você não consegue receber o request no construtor da classe? ou vc está usando isso numa classe não gerenciada pelo VRaptor?

D

Lucas Cavalcanti:
danilomunoz,

você não consegue receber o request no construtor da classe? ou vc está usando isso numa classe não gerenciada pelo VRaptor?

Lucas,

Ainda não consegui resolver… Estou usando em uma classe não gerenciada pelo VRaptor!
É um listener meu que implementa HttpSessionListener.

Obrigado,

F

Tenho uma duvida, gerei um projeto novo com o scaffold porem ele criou a dependencia para 3.4.1 se eu mudar apenas a dependencia para 3.5.0 vai funcionar normalmente??

valeu

L

danilomunoz, use:

VRaptorRequestHolder.currentRequest().getRequest();

Mas só faça isso em último caso! prefira usar a injeção de dependências.

L

fabioebner, teoricamente é só mudar a versão sim.

O vraptor-scaffold não foi atualizado ainda, obrigado por avisar!

L

garcia-jj:
leandrokjava:
Seria legal também inserir a data/hora que foi lançado cada versão do changelog, para que possamos ver como está o progresso das atualizações.
http://vraptor.caelum.com.br/pt/docs/changelog-pt/

Para saber data/hora de cada commit, autor, etc você pode acompanhar pelo github: https://github.com/caelum/vraptor/commits/master

Tudo bem garcia-jj eu sei que posso ver lá, mas insisto também em colocar no changelog, assim garantindo uma maior politica de transparência.

F

Lucas outra duvida, e possivel fazer push com o vraptor??

obrigado

A

leandrokjava:
garcia-jj:
leandrokjava:
Seria legal também inserir a data/hora que foi lançado cada versão do changelog, para que possamos ver como está o progresso das atualizações.
http://vraptor.caelum.com.br/pt/docs/changelog-pt/

Para saber data/hora de cada commit, autor, etc você pode acompanhar pelo github: https://github.com/caelum/vraptor/commits/master

Tudo bem garcia-jj eu sei que posso ver lá, mas insisto também em colocar no changelog, assim garantindo uma maior politica de transparência.

Eu realmente não entendo onde a data/hora das atualizações no changelog garante maior política de transparência…

Voltando ao tópico, excelente notícia!!! Utilizo o VRaptor há pouco tempo, mas foi tempo bastante para me identificar com o framework e adotá-lo em uma boa gama de soluções.

L

fabioebner, o que vc quer dizer com push? ajax push?

G

opa vou começar a migrar!!!

F

Isso mesmo Lucas…

R

Lucas, baixei o Blank Project e fiz um form (utilizando o linkTo) muito simples de login mas não coloquei nenhum input ao subir o projeto eu recebo o seguinte erro:

Caused by: java.lang.IllegalArgumentException: paramNames must have the same length as paramValues. Names: [nome, senha] Values: []

Fiz igual no 3.4 e não recebo o mesmo erro.

precisa de mais algum jar ou precisa de algum pacote no:br.com.caelum.vraptor.packages para utilizar o linkTo no 3.5?

D

é possível injetar beans CDI dentro das controllers do VRaptor 3.5?

e também é possível interceptar métodos da controller com interceptor da CDI?

valeu!

L

@fabioebner
Ajax push (comet) não é suportado em mtos servidores. Da última vez que eu verifiquei funcionava no tomcat mais novo, mas não tinha suporte a filters, logo nao funciona no vraptor. Pooling funciona bem na maioria dos casos e roda tranquilo no Vraptor.

@rafaelbtz
O linkTo não funciona bem com métodos com mesmo nome, tava funcionando no 3.4 por sorte. O ideal eh usar nomes diferentes nos métodos do controller

@dbdbdb
Ainda não, vai ficar pra proxima versão

F

Lucas Cavalcanti:
@fabioebner
Ajax push (comet) não é suportado em mtos servidores. Da última vez que eu verifiquei funcionava no tomcat mais novo, mas não tinha suporte a filters, logo nao funciona no vraptor. Pooling funciona bem na maioria dos casos e roda tranquilo no Vraptor.

Como assim? Esta dizendo que para se ter comet é necessário ter algo no container e não somente no framework?? Ou esta falando de comet usando websockets especificamente? O Liftweb(framework scala) tem uma das melhores(segundo o autor a melhor :shock: ) implementação de comet, e até onde eu sei funciona em qualquer servidor!

P

[b]Parabêns aos envolvidos.
Somos um amplo exemplo de esforço sinérgico com resultados tangíveis.

Pelo que parece, deverei logo em breve focar meus próximos projetos ao hibernate, deixando o JDBC em alguns casos de lado.

Abraços, pessoal.[/b]

L

@fredferrao
O Liftweb toma conta de toda a requisição web, por isso que ele tem condições de fazer isso…
O VRaptor só usa a requisição que já foi montada pela API de Servlets, então ele não tem condições de implementar comet.

A razão pra isso é que o servidor tem um número limitado de threads aberta (ex. 50) e pra fazer comet vc precisa deixar a conexão aberta com o cliente. Se o servidor não tiver algo que faz isso de maneira experta vc vai poder suportar apenas 50 clientes (ou o número máximo de threads abertas).

Servlet 3.0 tem o AsyncServlet que faz isso, mas não sei o quão estável ele está nos servidores.

J

Muito Bom ! ainda estamos aguardando a integração com CDI

P

Há um tempo atrás participei de um post sobre problemas de receber listas geradas pelo serialize Json do VRpator…
detalhes:http://www.guj.com.br/java/236884-resolvido-receber-json-no-vraptor-3

Por acaso esta questão foi ajustada?

abs

L

bom, agora existe um deserializer usando GSON, então é só escrever um adapter do GSON que se adequa ao seu modelo.

P

Legal! :smiley:

T

Atualizei para a versao 3.5 do vraptor aqui e tudo ocorreu sem maiores problemas… exceto por esse erro no linkTo da view jsp:

Mensagem de erro: “java.lang.IllegalArgumentException: paramNames must have the same length as paramValues. Names: [usuario] Values: []”

Descobri que isso ocorre nessa linha da minha view do jsp:

<form action="${linkTo[UsersController].login}">

E o respectivo método login no UsersController é:

@Post @Path("/login")
public void login(Usuario usuario){
}

Eu entendi que, como login recebe parametro, o linkTo espera que eu passe um parametro tambem. Mas eu nao passava parametro no vraptor 3.4.1 e funcionava. Agora, nao funciona.

O que fazer?

L

Existe mais de um método com o nome login no seu controller?

T

Com o nome login não, mas com o mesmo @path(/login) sim.

Um pouco mais da exception:

javax.servlet.jsp.JspException: javax.el.MethodNotFoundException: Unable to find method [login] with [0] parameters

T

Lucas, quando eu coloco qq parametro, assim por exemplo:

O erro não ocorre. Mais a url também não é montada.

R

Assim como o ThiagoInGuj eu também estou tendo o mesmo problema com o linkTo, recebo o mesmo erro. Não tenho 2 métodos com o mesmo nome e nem 2 urls e o método também não tem o mesmo nome do controller.

A

O problema relatado pelo ThiagoInGuj é o mesmo que relatei nesse tópico: http://www.guj.com.br/java/297961-vraptor---problemas-com-linkto-350

Parece que a alteração feita no LinkToHandler, para o cenário de métodos sobrecarregados, introduziu um pequeno bug…

Thiago, meu xará, acho acho que a única solução possível no seu caso aí por enquanto é criar outro método no controller

public class SeuController {
   @Path 
   public void metodo(Usuario usuario){
   }
   @Path
   public void metodo(){
   }
}

Passar null seria uma boa, mas do jeito que o código do VRaptor está não vai funcionar (por isso a url nem é gerada, a execução nao chega nesse ponto)

N

ThiagoInGuj:
Lucas, quando eu coloco qq parametro, assim por exemplo:

O erro não ocorre. Mais a url também não é montada.

Thiago, você tem certeza que não existe outro método na classe Controller com o nome “login”?

É um controller que extends outro controller? Se sim, o Controller pai tem algum método com o nome “login”?

G

LinkTo não serve para métodos POST. :slight_smile:

Não tem como criar um Link com POST.

T

alias meu xará rs eu simplesmente coloquei a url da action na mão mesmo enquanto o problema persistir…

Nykolas Lima eu to olhando pelo outline do eclipse e nao to vendo outro metodo login lá nao. Tem loginForm. Mas login nao tem outro nao.

Meu controller não extends ninguem tadinho, ele faz tudo sozinho rs

T

garcia-jj porque nao serve? tem que servir po!

A

garcia-jj:
LinkTo não serve para métodos POST. :slight_smile:

Não tem como criar um Link com POST.

Se faz essa checagem agora nao fazia antes, pq eu uso o linkTo pra preencher o atributo action dos forms. E é tudo método POST.

T

se o lnkTo nao servir para metodos post, entao pra que receber parametros? deveria receber somente String entao

L

o linkTo funciona pra POST sim, afinal é pra vc pegar a URI do método.

Isso é um bug mesmo, vou ver se corrijo e já crio um snapshot pra vcs testarem.

Pretendo lançar o 3.5.1 em breve com esses bugfixes.

T

Valeu! :wink:

G

My bad, funciona sim. Eu havia entendido outra coisa no post, que era a intenção de criar um “a href” com POST. :frowning:

alias:
garcia-jj:
LinkTo não serve para métodos POST. :slight_smile:

Não tem como criar um Link com POST.

Se faz essa checagem agora nao fazia antes, pq eu uso o linkTo pra preencher o atributo action dos forms. E é tudo método POST.

L

ThiagoInGuj e alias:

https://oss.sonatype.org/content/repositories/snapshots/br/com/caelum/vraptor/3.5.1-SNAPSHOT/vraptor-3.5.1-20130418.142121-1.jar

esse snapshot deve resolver o problema do linkTo. Podem testar por favor?

A

Opa, desculpem a demora no feedback, só consegui testar hoje…mas, bom, não tá funcionando 100% ainda nao lucas

Olha o meu teste

@Resource
public class IndexController {

	@Path("/")
	public void index() {
	}
	
	@Path("/teste")
	public void teste() {
		
	}
	
	@Path("/teste/{param}")
	public void teste(String param) {
		
	}
	
	@Path("/teste/{param}/{param2}")
	public void teste(String param, String param2) {
		
	}
	
	@Path({"/teste2", "/teste2/{param}"})
	public void teste2(String param){
		
	}
}

JSP

1 -> ${linkTo[IndexController].teste}
		
2 -> ${linkTo[IndexController].teste['tiago']}

3 -> ${linkTo[IndexController].teste['tiago']['tiago']}
		
4 -> ${linkTo[IndexController].teste2}

5 -> ${linkTo[IndexController].teste2['tiago']}

E a saída

1 -> /teste 
2 -> /teste/tiago 
3 -> /teste/tiago/tiago 
4 -> /teste2 
5 -> /teste2

Apenas esse quinto teste saiu errado (o esperado era /teste2/tiago)…antes do linkTo suportar a sobrecarga de métodos, eu estava utilizando assim, recebendo mais um path no mesmo método no controller. E a invocação do metodo no jsp, com o linkTo, funcionava com e sem parametro.

Eu penso que o ideal seria sobrecarregar o método, da forma como está funcionando agora, como esse exemplo do método “teste”, mas se der pra fazer suportar esse segundo cenario ai…senao eu vou ter que reescrever vários controllers aqui! :lol:

Valeu!

L

é que se tiver no caso:

@Path({"/teste2", "/teste2/{param}"})

é meio difícil chutar qual dos paths possíveis a gente deveria usar… o VRaptor sempre deu preferência para o primeiro path (e isso funciona desse mesmo jeito para o redirectTo, por exemplo)

Isso tava funcionando antes?

A

Lucas Cavalcanti:
é que se tiver no caso:

@Path({"/teste2", "/teste2/{param}"})

é meio difícil chutar qual dos paths possíveis a gente deveria usar… o VRaptor sempre deu preferência para o primeiro path (e isso funciona desse mesmo jeito para o redirectTo, por exemplo)

Isso tava funcionando antes?

Sim, estava. Retornava o path com o parametro, ou o path sem parametro caso não fosse passado no jsp. Será que tava funcionando por “sorte”? :stuck_out_tongue:

L

Acho que era sorte sim :stuck_out_tongue:

não foi mudado nada nessa parte…

o cara que faz isso é esse código:

<aside class="onebox githubblob">
  <header class="source">
      <a href="https://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/http/route/DefaultRouter.java#L131-L143" target="_blank">github.com</a>
  </header>
  <article class="onebox-body">
    <h4><a href="https://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/http/route/DefaultRouter.java#L131-L143" target="_blank">caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/http/route/DefaultRouter.java#L131-L143</a></h4>
<pre class="onebox"><code class="lang-java"><ol class="start lines" start="131" style="counter-reset: li-counter 130 ;">
<li>			throw new ResourceNotFoundException();</li>
<li>		}</li>
<li>		return routesMatchingURI;</li>
<li>	}</li>
<li>
</li>
<li>	public <T> String urlFor(Class<T> type, Method method, Object... params) {</li>
<li>		Iterator<Route> matches = Iterators.filter(routes.iterator(), canHandle(type, method));</li>
<li>		if (matches.hasNext()) {</li>
<li>			try {</li>
<li>				return matches.next().urlFor(type, method, params);</li>
<li>			} catch (Exception e) {</li>
<li>				throw new VRaptorException("The selected route is invalid for redirection: " + type.getName() + '.'</li>
<li>						+ method.getName(), e);</li>
</ol>

ele filtra todas as Routes que caem no type e method passados, e seleciona a primeira… Isso pode vir em qualquer ordem.

se vc trocar de:

@Path({"/teste2", "/teste2/{param}"})

para

@Path({"/teste2/{param}", "/teste2"})

creio que funcione

A

Funcionou lucas, creio que eu que me enganei, pq olhando os controllers aqui dos meus projetos já estavam todos do jeito que voce sugeriu (com o path com parametro sendo o primeiro item do array de paths), então acho que já não funcionava mesmo, mas nem precisa tambem, esse ajuste no array já resolve.

E isso aqui, acha que é um uso válido pro linkTo?

${linkTo[IndexController].teste2[null]}

Pensei em algum cenario que fosse passado como parametro alguma variavel (${algumacoisa}) que porventura venha nula…nesse caso ai o linkTo não está devolvendo nada

Fora esse cenário esse bizarro acima, o linkTo tá corrigido.

Valeu!

L

é que dá NullPointerException, e o ${} ignora NullPointerExceptions

o ideal seria dar um erro sim… abre uma issue lá por favor =)

C

Estou com um problema, após atualizar o Vraptor, ele parou de reconhecer métodos como addAnnotatedClass(Class) da Configuration do Hibernate, alguém mais passou por isso?

L

Isso não é da atualização do VRaptor, é por causa da atualização do hibernate.

esse método só funciona até o hibernate 3.6.x

C

Lucas Cavalcanti:
Isso não é da atualização do VRaptor, é por causa da atualização do hibernate.

esse método só funciona até o hibernate 3.6.x

O VRaptor não usa esse ? Estou usando o 3.6.10

L

o VRaptor não depende do hibernate. Você pode usar a que você quiser.

A

Lucas tem previsão pra lançar um release oficial com essas correções?

L

Acabei de fazer o deploy no maven… deve estar disponível no repo maven central em algumas horas =)

A

Valeu!

T

Opa! Eu perdi essa thread de vista, foi mal!! Lucas, no maven ainda consta a versao 3.5.0. Onde fica o release com as correcoes?

L

a versão 3.5.0 ainda está no maven, e vai continuar lá :wink:

a versão com as correções é a 3.5.1

A

Thiago, cheque sua configuração de repositórios, pq no repo central do Maven tá lá a versão 3.5.1.

http://search.maven.org/#artifactdetails|br.com.caelum|vraptor|3.5.1|jar

T

Lucas e alias, desculpe a minha ignorância… eu tava pesquisando pelo novo release do vraptor no maven repository(http://mvnrepository.com/) não no repositorio central (http://search.maven.org/).

Vou testar o novo release aqui e qualquer problema eu aviso!! valeu equipe do Vraptor, voces são 10!

D

Pessoal,

fizemos a migração para a versão 3.5.0 e alguns problemas que tivemos, e também como resolvemos. Não sei se é melhor criar um novo tópico ou deixar aqui mesmo. Se acharem melhor criar um novo tópico é só me avisar que eu crio.

#1
O nosso login parou de funcionar na injeção de dependências e acredito que esteja relacionado a troca para o Google Guice.
Não sei por qual motivo, mas depois que a session estava criada, ao chamar o login, era injetando UserModel no parâmetro user do método doLogin, ao invés de String. Tenho a impressão que ele busca isso da session que já estava salva. Segue a classe de login e a classe que temos salvamos os dados na session.

@Post
@Path("login")
public void doLogin(HttpSession session, String user, String password, SESSION_TYPE type) {


@Component
@SessionScoped
public class AppSessionModel implements Serializable {
	private UserModel user;
(OK) Antes de criar a sessão, tínhamos o seguinte log:
24/05/2013 14:38:04,258 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: LoginController.doLoginLoginController.doLogin(HttpSession, String, String, SESSION_TYPE)] are [org.apache.catalina.session.StandardSessionFacade@7c537c91, ADMIN, PWD, INTERNAL]
(NOK) Depois que a sessão já estava criada, se tentássemos realizar outro login:
24/05/2013 14:42:04,431 DEBUG [IogiParametersProvider] getParametersFor() called with parameters Parameters(Parameter(type -> INTERNAL), Parameter(user -> ADMIN), Parameter(password -> PWD)) and targets [Target(name=session, type=interface javax.servlet.http.HttpSession), Target(name=user, type=class java.lang.String), Target(name=password, type=class java.lang.String), Target(name=type, type=class br.com.xxx.enums.SESSION_TYPE)].

May 24, 2013 3:04:46 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [default] in context with path [/myappname] threw exception
br.com.caelum.vraptor.InterceptionException: java.lang.IllegalArgumentException: argument type mismatch
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:87)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:96)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.xxxxxx.api.interceptor.FrontInterceptor.intercept(FrontInterceptor.java:62)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	at br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:82)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)

Nós resolvemos este problema trocando o nome do parâmetro para userName e agora está ok. Porém esta é uma alteração ruim para o sistema. Se tiverem outra opinião, por favor comentem.

#2
Também tivemos erros com upload de array de imagens:

May 24, 2013 3:55:56 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [default] in context with path [/myapp] threw exception
br.com.caelum.vraptor.http.InvalidParameterException: Exception when trying to instantiate Target(name=images, type=interface java.util.List)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.handleException(VRaptorInstantiator.java:96)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.handleException(VRaptorInstantiator.java:98)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:88)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:81)
	at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateOrAddError(IogiParametersProvider.java:80)
	at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateParameters(IogiParametersProvider.java:73)
	at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.getParametersFor(IogiParametersProvider.java:63)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.getParametersFor(ParametersInstantiatorInterceptor.java:132)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:86)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.xxxxxxx.api.interceptor.FrontInterceptor.intercept(FrontInterceptor.java:62)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:137)
	at br.com.xxxxxxx.api.interceptor.CustomMultipartFilesystemConfig.intercept(CustomMultipartFilesystemConfig.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.xxxxxxx.api.interceptor.MetricsInterceptor.intercept(MetricsInterceptor.java:23)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:137)
	at br.com.xxxxxxxx.api.interceptor.CustomMultipartFilesystemConfig.intercept(CustomMultipartFilesystemConfig.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	at br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:82)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
Caused by: br.com.caelum.iogi.exceptions.InvalidTypeException: Cannot instantiate abstract type interface br.com.caelum.vraptor.interceptor.multipart.UploadedFile
	at br.com.caelum.iogi.ObjectInstantiator.expectingAConcreteTarget(ObjectInstantiator.java:40)
	at br.com.caelum.iogi.ObjectInstantiator.instantiate(ObjectInstantiator.java:26)
	at br.com.caelum.iogi.MultiInstantiator.instantiate(MultiInstantiator.java:20)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:86)
	at br.com.caelum.iogi.collections.IndexedListInstantiator.instantiate(IndexedListInstantiator.java:34)
	at br.com.caelum.iogi.collections.ListInstantiator.instantiate(ListInstantiator.java:25)
	at br.com.caelum.iogi.collections.ListInstantiator.instantiate(ListInstantiator.java:10)
	at br.com.caelum.vraptor.http.iogi.NullDecorator.instantiate(NullDecorator.java:39)
	at br.com.caelum.iogi.MultiInstantiator.instantiate(MultiInstantiator.java:20)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:86)
	... 54 more

Depois der ver os links:
https://github.com/caelum/vraptor/issues/454
https://github.com/caelum/vraptor/issues/466

Adicionamos esta dependência ao pom.xml do projeto:

ognl
ognl
2.7.3

Com isso tivemos outro erro:
May 24, 2013 4:15:20 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [default] in context with path [/myapp] threw exception
br.com.caelum.vraptor.VRaptorException: Unable to find converter for br.com.caelum.vraptor.interceptor.multipart.UploadedFile
	at br.com.caelum.vraptor.core.DefaultConverters.to(DefaultConverters.java:59)
	at br.com.caelum.vraptor.http.ognl.ListAccessor.setProperty(ListAccessor.java:87)
	at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2332)
	at ognl.ASTProperty.setValueBody(ASTProperty.java:127)
	at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
	at ognl.SimpleNode.setValue(SimpleNode.java:279)
	at ognl.Ognl.setValue(Ognl.java:737)
	at ognl.Ognl.setValue(Ognl.java:783)
	at br.com.caelum.vraptor.http.ognl.OgnlFacade.setValue(OgnlFacade.java:100)
	at br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.setProperty(OgnlParametersProvider.java:162)
	at br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.createParameter(OgnlParametersProvider.java:134)
	at br.com.caelum.vraptor.http.ognl.OgnlParametersProvider.getParametersFor(OgnlParametersProvider.java:86)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.getParametersFor(ParametersInstantiatorInterceptor.java:132)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:86)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.xxxxxxxxx.api.interceptor.FrontInterceptor.intercept(FrontInterceptor.java:62)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:137)
	at br.com.xxxxxxxx.interceptor.CustomMultipartFilesystemConfig.intercept(CustomMultipartFilesystemConfig.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.xxxxxxxx.api.interceptor.MetricsInterceptor.intercept(MetricsInterceptor.java:23)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:137)
	at br.com.xxxxxxxxx.api.interceptor.CustomMultipartFilesystemConfig.intercept(CustomMultipartFilesystemConfig.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	at br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:82)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
Com base nos mesmos links, adicionamos essa classe e tudo funcionou normalmente. Ficamos um pouco preocupados porque estes erros parecem ser já conhecidos e que foram resolvidos em versões anteriores. Não sei se resolvemos da melhor maneira...
@Convert(UploadedFile.class)
public class UploadedFileConverter implements Converter {

    private final HttpServletRequest request;

    public UploadedFileConverter(HttpServletRequest request) {
        this.request = request;
    }

    public UploadedFile convert(String value, Class extends UploadedFile> type, ResourceBundle bundle) {
        Object upload = request.getAttribute(value);
        return upload == null ? null : type.cast(upload);
    }

}

Bem, com este post espero poder colaborar com o VRaptor que é uma excelente ferramenta. Se necessitarem de maiores esclarecimentos ou testes é só mandar mensagem.

Até mais,

L

Olá Danilo,

Cuidado com posts muito grandes, sabe como é, TL;DR;

vc usava qual versão antes de ir pra 3.5.0?

usava ognl ou iogi?

a dúvida #1 parece ser problema de mudança de ognl para iogi…

na número #2, creio que o converter funciona pro IOGI tb.

D

Lucas Cavalcanti:
Olá Danilo,

Cuidado com posts muito grandes, sabe como é, TL;DR;

vc usava qual versão antes de ir pra 3.5.0?

usava ognl ou iogi?

a dúvida #1 parece ser problema de mudança de ognl para iogi…

na número #2, creio que o converter funciona pro IOGI tb.

Lucas,

migramos da versão 3.4.1 para 3.5.1 e usavamos IOGI. Eu esqueci de comentar que quando colocamos o converter para upload, voltamos o iogi e não tivemos mais problemas com upload. Sobre a dúvida #1, ela ainda ocorre.

Obrigado,

L

estranho… existe mais de um método chamado doLogin?

esse erro acontece durante um redirect?

F

danilomunoz:
Pessoal,

#2
Também tivemos erros com upload de array de imagens:

Com base nos mesmos links, adicionamos essa classe e tudo funcionou normalmente. Ficamos um pouco preocupados porque estes erros parecem ser já conhecidos e que foram resolvidos em versões anteriores. Não sei se resolvemos da melhor maneira…

@Convert(UploadedFile.class)
public class UploadedFileConverter implements Converter {

    private final HttpServletRequest request;

    public UploadedFileConverter(HttpServletRequest request) {
        this.request = request;
    }

    public UploadedFile convert(String value, Class extends UploadedFile> type, ResourceBundle bundle) {
        Object upload = request.getAttribute(value);
        return upload == null ? null : type.cast(upload);
    }

}

Bem, com este post espero poder colaborar com o VRaptor que é uma excelente ferramenta. Se necessitarem de maiores esclarecimentos ou testes é só mandar mensagem.

Até mais,

Danilo,

Tentei usar a tua implementação e não consegui, segue o código utilizado por mim. Fiz pequenas modificações.

@Convert(UploadedFile.class)
public class UploadedFileConverter implements Converter<UploadedFile>{
	
	private final HttpServletRequest request;
	
	public UploadedFileConverter(HttpServletRequest request) {
		this.request = request;
	}
	
	public UploadedFile convert(String value, Class<? extends UploadedFile> type, ResourceBundle bundle) {
        Object upload = request.getAttribute(value);
        return upload == null ? null :type.cast(upload);
    }
}

PS. Não precisei adicionar nada de dependência.

D

Desculpe, faltou a anotação:

@ApplicationScoped

Até mais,

D

Lucas Cavalcanti:
estranho… existe mais de um método chamado doLogin?

esse erro acontece durante um redirect?

Lucas,

[list]só existe este método doLogin[/list]
[list]não está dentro de redirect[/list]
[list]ainda acho que há algum problema com o nome da variável user do meu model:[/list]

@Component @SessionScoped public class AppSessionModel implements Serializable { private UserModel user;

Obrigado,

L

tenta renomear essa variável interna, pra ver se o erro passa… mas quase certeza que não é isso

D

já tentamos e não deu certo… :frowning:

L

Danilo, faz um teste por favor:

  • receba o HttpServletRequest como parametro do método
  • imprima o request.getParameterMap() e veja quais são os parâmetros que chegaram.
A

Project Blank no GlassFish.

SEVERE: log4j:ERROR log4j called after unloading, see <a href="http://logging.apache.org/log4j/1.2/faq.html#unload">http://logging.apache.org/log4j/1.2/faq.html#unload</a>.

SEVERE: java.lang.IllegalStateException: Class invariant violation

at org.apache.log4j.LogManager.getLoggerRepository(LogManager.java:199)

at org.apache.log4j.LogManager.getLogger(LogManager.java:228)

at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)

at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242)

at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:254)

at br.com.caelum.vraptor.validator.MethodValidatorFactoryCreator.(MethodValidatorFactoryCreator.java:47)

at sun.misc.Unsafe.ensureClassInitialized(Native Method)

at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)

at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:140)

at java.lang.reflect.Field.acquireFieldAccessor(Field.java:949)

at java.lang.reflect.Field.getFieldAccessor(Field.java:930)

at java.lang.reflect.Field.get(Field.java:372)

at org.glassfish.web.loader.WebappClassLoader.clearReferences(WebappClassLoader.java:1833)

at org.glassfish.web.loader.WebappClassLoader.stop(WebappClassLoader.java:1662)

at org.glassfish.web.loader.WebappClassLoader.preDestroy(WebappClassLoader.java:1631)

at org.glassfish.deployment.common.DeploymentContextImpl.getClassLoader(DeploymentContextImpl.java:236)

at org.glassfish.deployment.common.DeploymentContextImpl.getClassLoader(DeploymentContextImpl.java:186)

at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:450)

at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)

at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:353)

at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)

at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)

at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)

at org.glassfish.deployment.admin.ReDeployCommand.execute(ReDeployCommand.java:126)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)

at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)

at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)

at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)

at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)

at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)

at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)

at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)

at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)

at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)

at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)

at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)

at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)

at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)

at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)

at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)

at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)

at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)

at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)

at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)

at com.sun.grizzly.ContextTask.run(ContextTask.java:71)

at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)

at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)

at java.lang.Thread.run(Thread.java:722)
SEVERE: 	at org.apache.log4j.LogManager.getLoggerRepository(LogManager.java:199)

SEVERE: 	at org.apache.log4j.LogManager.getLogger(LogManager.java:228)

SEVERE: 	at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)

SEVERE: 	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242)

SEVERE: 	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:254)

SEVERE: 	at br.com.caelum.vraptor.validator.MethodValidatorFactoryCreator.(MethodValidatorFactoryCreator.java:47)

SEVERE: 	at sun.misc.Unsafe.ensureClassInitialized(Native Method)

SEVERE: 	at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)

SEVERE: 	at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:140)

SEVERE: 	at java.lang.reflect.Field.acquireFieldAccessor(Field.java:949)

SEVERE: 	at java.lang.reflect.Field.getFieldAccessor(Field.java:930)

SEVERE: 	at java.lang.reflect.Field.get(Field.java:372)

SEVERE: 	at org.glassfish.web.loader.WebappClassLoader.clearReferences(WebappClassLoader.java:1833)

SEVERE: 	at org.glassfish.web.loader.WebappClassLoader.stop(WebappClassLoader.java:1662)

SEVERE: 	at org.glassfish.web.loader.WebappClassLoader.preDestroy(WebappClassLoader.java:1631)

SEVERE: 	at org.glassfish.deployment.common.DeploymentContextImpl.getClassLoader(DeploymentContextImpl.java:236)

SEVERE: 	at org.glassfish.deployment.common.DeploymentContextImpl.getClassLoader(DeploymentContextImpl.java:186)

SEVERE: 	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:450)

SEVERE: 	at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)

SEVERE: 	at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:353)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)

SEVERE: 	at org.glassfish.deployment.admin.ReDeployCommand.execute(ReDeployCommand.java:126)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)

SEVERE: 	at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)

SEVERE: 	at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)

SEVERE: 	at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)

SEVERE: 	at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)

SEVERE: 	at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)

SEVERE: 	at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)

SEVERE: 	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)

SEVERE: 	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)

SEVERE: 	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)

SEVERE: 	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)

SEVERE: 	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)

SEVERE: 	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)

SEVERE: 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)

SEVERE: 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)

SEVERE: 	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)

SEVERE: 	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)

SEVERE: 	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)

SEVERE: 	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)

SEVERE: 	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)

SEVERE: 	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)

SEVERE: 	at java.lang.Thread.run(Thread.java:722)
L

Alexandre,

Isso acontece só no glassfish? Qual versão?

A

glassfish-3.1.2.2

L

bom, isso não é um problema com o VRaptor:


http://issues.liferay.com/browse/LPS-21525

Se o problema só acontece no shutdown, pode ignorar, não vai afetar a aplicação.

A

Lucas,

acontece no start quando o blank esta ATIVO.
Se eu DESATIVO o blank do Vraptor o erro some…

L

chega a aparecer algum log do vraptor antes disso?

consegue ver se tem algum do slf4j no servidor (e não na aplicação)?

A

Maquina recem formatada, Instalada agora o Netbeans e o primeiro projeto java no Glassfish é o Vraptor.

Qr q eu faça mais alguns testes?

L

O erro que vc relatou parece uma incompatibilidade do slf4j ou do log4j com o glassfish… não tem a ver com o VRaptor.

o que vc pode tentar fazer é remover o jar do log4j e o jar do slf4j-log4j, talvez também o log4j.xml que vem junto com o blank-project.

A

Lucas, fui pra combinação: Eclipse + Tomcat.

Netbeans e Glassfish estavam me deixando improdutivo =/

Mas vamos que vamos e, segue o que achei da versão 3.5.1:

Sugestões:

  • Que dê para usar textos(mensagens) não internacionalizadas na validação fluente:
validator.checking(new Validations() { {
            that(!produto.getNome().isEmpty(), "produto.nome", "Nome vazio!");
            that(produto.getPreco() &gt; 0, "produto.preco", "Preço inválido");
        } });

Quando o level do log estiver como DEBUG, sugiro que log:

  • Tudo que tiver no result.
  • As mensagens de erro.

Esse método retorna uma exception sempre que tem uma msg de validação, o que faz manter o request original: validator.onErrorUsePageOf(controller);
Seria possível fazer o mesmo no result.use ?
De modo que podemos reaproveitar o return do método? Sem a OBRIGAÇÃO de colocar o objeto no result. Os objetos seriam mantidos do request e o objeto do retorno seria enviado.

Outra sugestão de atalho:

result.use(page()).forwardTo(controller); (Passando o controller ou this). Atualmente so temos passando URI em String result.forwardTo(&quot;/WEB-INF/jsp/index/index.jsp&quot;);

Erros:
14:29:48,523 DEBUG [ForwardToDefaultViewInterceptor] forwarding to the dafault page for this logic - O correto: default
14:30:17,191 INFO [VRaptor ] VRaptor 3.5.0 successfuly initialized - O correto: 3.5.1
14:31:18,635 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: IndexController.indexIndexController.index()] - O correto: IndexController.index()

Duplicados:
16:35:49,436 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for JogadorController.logon(JogadorTO) as [jogador]
16:35:49,437 DEBUG [JstlLocalization ] couldn’t find message bundle, creating an empty one
16:35:49,437 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for JogadorController.logon(JogadorTO) as [jogador]

14:30:17,169 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for IndexController.index() as []
14:30:17,170 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for IndexController.index() as []

15:25:55,985 DEBUG [JavassistProxifier ] a proxy for class br.com.supertrunfo.controllers.IndexController is created as class br.com.supertrunfo.controllers.IndexController_$$javassist_1
15:25:55,985 DEBUG [JavassistProxifier ] a proxy for class br.com.supertrunfo.controllers.IndexController is created as class br.com.supertrunfo.controllers.IndexController
$$_javassist_1

L

Cria uma issue para cada uma dessas sugestões por favor:

Se preferir mandar um Pull Request com essas correções, seria bem legal também =)

Não entendi o que vc quis dizer aqui… vc quer que o result.use() lance uma exception para parar o método? Isso a gente não pode mais fazer, vai quebrar o código de todo mundo… além disso existem alguns casos em que isso não é o desejável:

result.use(Results.http()).addHeader("Content-Type", "text/plain");
result.use(Results.status()).forbidden("Vc não deveria ver isso");

Sobre o retorno do método, ele já fica disponível na jsp, com o nome da classe com a primeira letra minúscula:

public Produto metodoDoController() {...}

gera a variável ${produto}

Isso já funciona:

result.forwardTo(this).metodo();

Abre uma issue ou um pull request pra isso por favor =)

Alexandre Ferreira:

Duplicados:
16:35:49,436 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for JogadorController.logon(JogadorTO) as [jogador]
16:35:49,437 DEBUG [JstlLocalization ] couldn’t find message bundle, creating an empty one
16:35:49,437 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for JogadorController.logon(JogadorTO) as [jogador]

14:30:17,169 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for IndexController.index() as []
14:30:17,170 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for IndexController.index() as []

15:25:55,985 DEBUG [JavassistProxifier ] a proxy for class br.com.supertrunfo.controllers.IndexController is created as class br.com.supertrunfo.controllers.IndexController_$$javassist_1
15:25:55,985 DEBUG [JavassistProxifier ] a proxy for class br.com.supertrunfo.controllers.IndexController is created as class br.com.supertrunfo.controllers.IndexController
$$_javassist_1

Quanto a isso, vc não duplicou o appender do log? ou só esses caras ficam duplicados?

A

Criei as Issues...

--------------------

Sobre o retorno do método, ele já fica disponível na jsp, com o nome da classe com a primeira letra minúscula:

public Produto metodoDoController() {...}

gera a variável ${produto}

Não é colocado no result quando o metodo é redirecionado para outro controller, exemplo:

public void logon(JogadorTO jogador) {
		if (StringUtils.isBlank(jogador.getUsuario())) {
			validator.add(new ValidationMessage("Preencha o campo obrigatório", "jogador.usuario"));
		}

		validator.onErrorUsePageOf(IndexController.class).index();

		result.include("jogador", jogador);
		System.out.println(result.included());
		result.forwardTo(IndexController.class).index();
	}

result.include("jogador", jogador);

L

se for via forward não vai mesmo… vc tem que fazer via redirect.

A

Pois é…

Mas via redirect vai para URL, né ?

L

O cara acabou de logar e vc quer manter a URL de login na barra de endereço do browser?

L

bom dia galera,

peguei o my dvds pra começar um projeto do zero antes de migrar meus projetos pro 3.5.1, nao fiz absolutamente nada, peguei todas as libs do my dvds e iniciei um projeto novo, configurei meu hibernate.cfg.xml e criei meu primeiro controller, nao to usando nada diferente do que já veio, a nao ser alguns jars, como c3p0 e jtds(driver sql server), o tomcat sobe normalmente, mas quando chamo o meu projeto já da esse erro:

meu controller:

@Resource
public class IndexController {

public IndexController() {
         //tinha alguns parametros, mas  retirei tudo pra ter certeza que nao é outra classe relacionada as injeçoes de dependencia.
}

@Path("/")
public void index() {
}

}

quando executo a aplicação tenho esses erros:

com.google.inject.ProvisionException: Guice provision errors:

  1. Error notifying InjectionListener br.com.caelum.vraptor.ioc.guice.ScopeLifecycleListener$LifecycleExecutor@182555e of br.com.caelum.vraptor.validator.MethodValidatorFactoryCreator.
    
    Reason: net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method buildFactory
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.validator.MethodValidatorFactoryCreator
    
    while locating br.com.caelum.vraptor.ioc.ComponentFactory<javax.validation.ValidatorFactory>
    
    for parameter 0 at br.com.caelum.vraptor.ioc.guice.ComponentFactoryProviderAdapter.(ComponentFactoryProviderAdapter.java:35)
    
    while locating br.com.caelum.vraptor.ioc.guice.ComponentFactoryProviderAdapter<javax.validation.ValidatorFactory>
    
    while locating javax.validation.ValidatorFactory
    
    for parameter 0 at br.com.caelum.vraptor.validator.ValidatorCreator.(ValidatorCreator.java:46)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.validator.ValidatorCreator
    
    while locating br.com.caelum.vraptor.ioc.ComponentFactory<javax.validation.Validator>
    
    for parameter 0 at br.com.caelum.vraptor.ioc.guice.ComponentFactoryProviderAdapter.(ComponentFactoryProviderAdapter.java:35)
    
    while locating br.com.caelum.vraptor.ioc.guice.ComponentFactoryProviderAdapter<javax.validation.Validator>
    
    while locating javax.validation.Validator
    
    for parameter 1 at br.com.caelum.vraptor.validator.DefaultBeanValidator.(DefaultBeanValidator.java:57)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.validator.BeanValidator
    
    for parameter 4 at br.com.caelum.vraptor.validator.DefaultValidator.(DefaultValidator.java:63)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.Validator
    
    for parameter 1 at br.com.caelum.vraptor.plugin.hibernate4.HibernateTransactionInterceptor.(HibernateTransactionInterceptor.java:40)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.plugin.hibernate4.HibernateTransactionInterceptor
    
    Caused by: net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method buildFactory
    
    at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:45)
    
    at net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54)
    
    at net.vidageek.mirror.invoke.MethodHandlerByMethod.withoutArgs(MethodHandlerByMethod.java:58)
    
    at br.com.caelum.vraptor.ioc.guice.ScopeLifecycleListener$LifecycleExecutor.afterInjection(ScopeLifecycleListener.java:89)
    
    at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:97)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:95)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at com.google.inject.Scopes$1$1.get(Scopes.java:65)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:53)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at com.google.inject.Scopes$1$1.get(Scopes.java:65)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:53)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at br.com.caelum.vraptor.ioc.guice.AbstractScope$ScopedProvider.get(AbstractScope.java:73)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at br.com.caelum.vraptor.ioc.guice.AbstractScope$ScopedProvider.get(AbstractScope.java:73)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at br.com.caelum.vraptor.ioc.guice.AbstractScope$ScopedProvider.get(AbstractScope.java:73)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:978)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
    
    at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:974)
    
    at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1013)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceProvider$GuiceContainer.instanceFor(GuiceProvider.java:62)
    
    at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:47)
    
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
    
    at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
    
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
    
    at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
    
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
    
    at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
    
    at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
    
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
    
    at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
    
    at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:82)
    
    at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
    
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    
    at java.lang.Thread.run(Unknown Source)
    
    Caused by: java.lang.AbstractMethodError: org.hibernate.validator.engine.ConfigurationImpl.parameterNameProvider(Ljavax/validation/ParameterNameProvider;)Ljavax/validation/Configuration;
    
    at br.com.caelum.vraptor.validator.MethodValidatorFactoryCreator.buildFactory(MethodValidatorFactoryCreator.java:59)
    
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    
    at java.lang.reflect.Method.invoke(Unknown Source)
    
    at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38)
    
     92 more
    
  2. Error notifying InjectionListener br.com.caelum.vraptor.ioc.guice.ScopeLifecycleListener$LifecycleExecutor@182555e of br.com.caelum.vraptor.validator.MethodValidatorFactoryCreator.
    
    Reason: net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method buildFactory
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.validator.MethodValidatorFactoryCreator
    
    while locating br.com.caelum.vraptor.ioc.ComponentFactory<javax.validation.ValidatorFactory>
    
    for parameter 0 at br.com.caelum.vraptor.ioc.guice.ComponentFactoryProviderAdapter.(ComponentFactoryProviderAdapter.java:35)
    
    while locating br.com.caelum.vraptor.ioc.guice.ComponentFactoryProviderAdapter<javax.validation.ValidatorFactory>
    
    while locating javax.validation.ValidatorFactory
    
    for parameter 0 at br.com.caelum.vraptor.validator.MessageInterpolatorFactory.(MessageInterpolatorFactory.java:32)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.validator.MessageInterpolatorFactory
    
    while locating br.com.caelum.vraptor.ioc.ComponentFactory<javax.validation.MessageInterpolator>
    
    for parameter 0 at br.com.caelum.vraptor.ioc.guice.ComponentFactoryProviderAdapter.(ComponentFactoryProviderAdapter.java:35)
    
    while locating br.com.caelum.vraptor.ioc.guice.ComponentFactoryProviderAdapter<javax.validation.MessageInterpolator>
    
    while locating javax.validation.MessageInterpolator
    
    for parameter 2 at br.com.caelum.vraptor.validator.DefaultBeanValidator.(DefaultBeanValidator.java:57)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.validator.BeanValidator
    
    for parameter 4 at br.com.caelum.vraptor.validator.DefaultValidator.(DefaultValidator.java:63)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.Validator
    
    for parameter 1 at br.com.caelum.vraptor.plugin.hibernate4.HibernateTransactionInterceptor.(HibernateTransactionInterceptor.java:40)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.plugin.hibernate4.HibernateTransactionInterceptor
    
    Caused by: net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method buildFactory
    
    at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:45)
    
    at net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54)
    
    at net.vidageek.mirror.invoke.MethodHandlerByMethod.withoutArgs(MethodHandlerByMethod.java:58)
    
    at br.com.caelum.vraptor.ioc.guice.ScopeLifecycleListener$LifecycleExecutor.afterInjection(ScopeLifecycleListener.java:89)
    
    at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:97)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:95)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at com.google.inject.Scopes$1$1.get(Scopes.java:65)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:53)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at com.google.inject.Scopes$1$1.get(Scopes.java:65)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:53)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at br.com.caelum.vraptor.ioc.guice.AbstractScope$ScopedProvider.get(AbstractScope.java:73)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at br.com.caelum.vraptor.ioc.guice.AbstractScope$ScopedProvider.get(AbstractScope.java:73)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at br.com.caelum.vraptor.ioc.guice.AbstractScope$ScopedProvider.get(AbstractScope.java:73)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:978)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
    
    at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:974)
    
    at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1013)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceProvider$GuiceContainer.instanceFor(GuiceProvider.java:62)
    
    at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:47)
    
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
    
    at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
    
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
    
    at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
    
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
    
    at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
    
    at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
    
    at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
    
    at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
    
    at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:82)
    
    at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
    
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    
    at java.lang.Thread.run(Unknown Source)
    
    Caused by: java.lang.AbstractMethodError: org.hibernate.validator.engine.ConfigurationImpl.parameterNameProvider(Ljavax/validation/ParameterNameProvider;)Ljavax/validation/Configuration;
    
    at br.com.caelum.vraptor.validator.MethodValidatorFactoryCreator.buildFactory(MethodValidatorFactoryCreator.java:59)
    
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    
    at java.lang.reflect.Method.invoke(Unknown Source)
    
    at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38)
    
     92 more
    
2 errors

com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:987)

com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1013)

br.com.caelum.vraptor.ioc.guice.GuiceProvider$GuiceContainer.instanceFor(GuiceProvider.java:62)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:47)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)

br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)

br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)

br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:82)

br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)

malz pelo post longo, mas to quebrando a cabeça aqui e nao acho solução, obrigado.

L

vc acrescentou algum jar a mais do hibernate?

existe o jar do validations-api?

L

nao, a lista de Jars, é exatamente igual a do mydvds, com 3 a mais, c3p0-0.9.1.2.jar jtds-1.3.0.jar, hibernate-c3p0-4.1.10.Final.jar,

até cheguei a tirar o javassist-3.12.1.GA.jar que vem no mydvds juntamente com o javassist-3.15.0-GA.jar

mas nao deu em nada, o que estou achando estranho é que no meu projeto, que comecei agora, nao tem nada d+, basicamente as mesmas coisas
que o mydvds, poucas classes, 4 beans, retirei os @component que tem em algumas classes que comecei a fazer, e nada.

o hibernate está funcionando ok, fiz um classe executavel para criar o banco e rodou perfeitamente.

precisa ter alguma configuração adicional do GUICE ?

L

qual jar que vc tem do validations-api?

L

to com o
validation-api-1.1.0.Final.jar

outra questão, esse hibernate-c3p0-4.1.10.Final.jar, adicionei por conta do c3p0, porque nao tava funcionando ai dps de pesquisas em foruns coloquei ele.
mas tirei agora, e o erro dá logo quando inicia o tomcat.

com.google.inject.CreationException: Guice creation errors:

  1. Error notifying InjectionListener br.com.caelum.vraptor.ioc.guice.ScopeLifecycleListener$LifecycleExecutor@1584f60 of br.com.caelum.vraptor.plugin.hibernate4.SessionFactoryCreator.
    
    Reason: net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method create
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.plugin.hibernate4.SessionFactoryCreator
    
    Caused by: net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method create
    
    at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:45)
    
    at net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54)
    
    at net.vidageek.mirror.invoke.MethodHandlerByMethod.withoutArgs(MethodHandlerByMethod.java:58)
    
    at br.com.caelum.vraptor.ioc.guice.ScopeLifecycleListener$LifecycleExecutor.afterInjection(ScopeLifecycleListener.java:89)
    
    at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:97)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:95)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at com.google.inject.Scopes$1$1.get(Scopes.java:65)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:204)
    
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:198)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
    
    at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:198)
    
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:179)
    
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)
    
    at com.google.inject.Guice.createInjector(Guice.java:95)
    
    at com.google.inject.Guice.createInjector(Guice.java:83)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceProvider.start(GuiceProvider.java:97)
    
    at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:108)
    
    at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:102)
    
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
    
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
    
    at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:107)
    
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4656)
    
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5309)
    
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    
    at java.util.concurrent.FutureTask.run(Unknown Source)
    
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    
    at java.lang.Thread.run(Unknown Source)
    
    Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.service.jdbc.connections.spi.ConnectionProvider]
    
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:186)
    
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:150)
    
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
    
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:223)
    
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:89)
    
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
    
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
    
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
    
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:71)
    
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2277)
    
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2273)
    
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1742)
    
    at br.com.caelum.vraptor.plugin.hibernate4.SessionFactoryCreator.create(SessionFactoryCreator.java:54)
    
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    
    at java.lang.reflect.Method.invoke(Unknown Source)
    
    at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38)
    
     35 more
    
    Caused by: org.hibernate.HibernateException: Could not instantiate connection provider [org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider]
    
    at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:192)
    
    at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:114)
    
    at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:54)
    
    at org.hibernate.service.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:69)
    
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176)
    
     52 more
    
    Caused by: org.hibernate.service.classloading.spi.ClassLoadingException: Unable to load class [org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider]
    
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:141)
    
    at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:189)
    
     56 more
    
    Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
    
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl$1.findClass(ClassLoaderServiceImpl.java:99)
    
    at java.lang.ClassLoader.loadClass(Unknown Source)
    
    at java.lang.ClassLoader.loadClass(Unknown Source)
    
    at java.lang.Class.forName0(Native Method)
    
    at java.lang.Class.forName(Unknown Source)
    
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:138)
    
     57 more
    
  2. Error notifying InjectionListener br.com.caelum.vraptor.ioc.guice.ScopeLifecycleListener$LifecycleExecutor@1584f60 of br.com.caelum.vraptor.plugin.hibernate4.SessionFactoryCreator.
    
    Reason: net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method create
    
    at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:151)
    
    while locating br.com.caelum.vraptor.plugin.hibernate4.SessionFactoryCreator
    
    while locating br.com.caelum.vraptor.ioc.ComponentFactory<org.hibernate.SessionFactory>
    
    Caused by: net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method create
    
    at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:45)
    
    at net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54)
    
    at net.vidageek.mirror.invoke.MethodHandlerByMethod.withoutArgs(MethodHandlerByMethod.java:58)
    
    at br.com.caelum.vraptor.ioc.guice.ScopeLifecycleListener$LifecycleExecutor.afterInjection(ScopeLifecycleListener.java:89)
    
    at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:97)
    
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:95)
    
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
    
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    
    at com.google.inject.Scopes$1$1.get(Scopes.java:65)
    
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
    
    at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
    
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:204)
    
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:198)
    
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
    
    at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:198)
    
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:179)
    
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)
    
    at com.google.inject.Guice.createInjector(Guice.java:95)
    
    at com.google.inject.Guice.createInjector(Guice.java:83)
    
    at br.com.caelum.vraptor.ioc.guice.GuiceProvider.start(GuiceProvider.java:97)
    
    at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:108)
    
    at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:102)
    
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
    
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
    
    at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:107)
    
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4656)
    
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5309)
    
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    
    at java.util.concurrent.FutureTask.run(Unknown Source)
    
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    
    at java.lang.Thread.run(Unknown Source)
    
    Caused by: java.lang.NullPointerException
    
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:87)
    
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2277)
    
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2273)
    
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1742)
    
    at br.com.caelum.vraptor.plugin.hibernate4.SessionFactoryCreator.create(SessionFactoryCreator.java:54)
    
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    
    at java.lang.reflect.Method.invoke(Unknown Source)
    
    at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38)
    
     36 more
    
2 errors

at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:435)

at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:183)

at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)

at com.google.inject.Guice.createInjector(Guice.java:95)

at com.google.inject.Guice.createInjector(Guice.java:83)

at br.com.caelum.vraptor.ioc.guice.GuiceProvider.start(GuiceProvider.java:97)

at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:108)

at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:102)

at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)

at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:107)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4656)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5309)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)

at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)
L

java.lang.ClassNotFoundException: Could not load requested class : org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider

vc precisa do jar que tem essa classe.

de preferencia da mesma versão do hibernate core que vc tá usando.

L

retirei, a
hibernate-c3p0-4.1.10.Final.jar

e baixei a
hibernate-c3p0-4.1.4.Final.jar

mesmo erro de antes… o tomcat sobe normal, quando rodo o controller acima, dá o mesmo erro.

L

se o jar do hibernate-core que vc tá usando é do 3.6.x, vc deveria usar o hibernte-c3p0-3.6.x

L

não, to usando o jar do hibernate que tá no mydvds

é o hibernate-core-4.1.4.Final.jar

L
retirei tudo do projeto, só tem as libs do

mydvds;

c3p0-0.9.1.2.jar;

jtds-1.3.0.jar;

hibernate-c3p0-4.1.4.Final.jar

somente um controller:
package generic.controller;

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;

@Resource
public class IndexController {

public IndexController() {
}

@Path("/")
public void index() {
}

}

tomcat sobe, mas quando executo a url no browser chamado o “/” dá o mesmo erro ideitficado acima.

quais são as libs exclusivas do guice ? vou retirar e usar o Spring ou o Pico.

L

tem como soltar algo com todas as dependencias, quando se usa determinado container ?

ta meio confuso isso, meu projeto ta vazio, nao tem nenhuma classe, nao roda nem com GUICE, nem com SPRING.

deve ter outras dependencias.

L

vc tentou com o blank-project?

o ideal é usar o maven, o ivy, o gradle ou coisa do tipo pra baixar as dependências…

tanto o blank-project qto o zip de distribuição do VRaptor tem as dependências corretas.

L

Lucas,

Valeu pela ajuda, montei o projeto novamente dês do inicio usando como base o vraptor-blank-project-3.5.1.zip, e fui colocando as dependências do hibernate 4.1.4 uma a uma.

na hora de configurar o pool c3p0, é que dava o problema, para utilizar ele, seguem as versões dos jars que inclui.
c3p0-0.9.1.2.jar
hibernate-c3p0-4.2.2.Final.jar

no hibernate.cfg.xml
org.hibernate.connection.C3P0ConnectionProvider

Falows.

Criado 10 de abril de 2013
Ultima resposta 19 de jun. de 2013
Respostas 103
Participantes 25
Casa do Codigo Casa do Codigo — Livros de tecnologia Livros de programacao, infraestrutura e inovacao
Fiap Graduacao em Tecnologia — FIAP Analise e Desenvolvimento de Sistemas, Engenharia de Software e mais