VRaptor 4 - Urls amigáveis @Path("/cliente/{id}")

98 views
Skip to first unread message

Shander Lyrio

unread,
May 9, 2014, 3:40:43 AM5/9/14
to caelum-...@googlegroups.com

Continuando com os testes, configurei eclipselink 2.5 +
vraptor-jpa-4.0.RC2 e o acesso ao banco de dados está funcionando
corretamente.

Estou encontrando erro ao tentar executar o seguinte:

@Path("/cliente/{codcliente}")
public void cliente(Integer codcliente) {

Cliente cliente = manager.find(Cliente.class, codcliente);
result.use(json()).from(cliente, "cliente").serialize();

}

Classe Cliente é um simples POJO com atributos Integer codcliente e
String nome, a listagem funciona normal então não é um problema com o
jpa ou banco de dados.

A parte que interessa do erro:

mai 09, 2014 4:22:28 AM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [default] in context with path
[/logist] threw exception
br.com.caelum.vraptor.InterceptionException:
br.com.caelum.vraptor.InterceptionException:
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001456:
Argument bean must not be null
at
br.com.caelum.vraptor.interceptor.StepInvoker.invokeMethod(StepInvoker.java:68)
at
br.com.caelum.vraptor.interceptor.StepInvoker.tryToInvoke(StepInvoker.java:54)
at
br.com.caelum.vraptor.interceptor.StepInvoker$Proxy$_$$_WeldClientProxy.tryToInvoke(Unknown
Source)
at
br.com.caelum.vraptor.interceptor.InterceptorExecutor.executeAround(InterceptorExecutor.java:75)
Caused by: br.com.caelum.vraptor.InterceptionException:
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001456:
Argument bean must not be null
at
br.com.caelum.vraptor.observer.ExecuteMethod.execute(ExecuteMethod.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at
br.com.caelum.vraptor.interceptor.StepInvoker.invokeMethod(StepInvoker.java:63)
... 44 more
Caused by: org.jboss.weld.exceptions.IllegalArgumentException:
WELD-001456: Argument bean must not be null
at
org.jboss.weld.util.Preconditions.checkArgumentNotNull(Preconditions.java:40)
at
org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:751)
at
org.jboss.weld.util.ForwardingBeanManager.getReference(ForwardingBeanManager.java:61)


Ou seja, ao que parece não está populando o atributo "codcliente"
do método. O que eu pensei que pudesse estar ocorrendo é algum problema
com a validação, mas o arquivo validation.xml foi colocado no lugar
certo, conforme a documentação e imagem do target gerado pelo maven
http://postimg.org/image/y291egn57/

Não existe neste projeto de exemplo, nenhum interceptor criado que
não sejam os padrões do vraptor e vraptor-jpa. A compilação está sendo
feita com o debug info ativado.

Caso alguém tenha alguma ideia do que esteja acontecendo fico
agradecido. Este é um dos testes que funcionava corretamente na versão
RC e deixou de funcionar na versão final.

--
Shander Lyrio

Rodrigo Turini

unread,
May 9, 2014, 5:30:38 AM5/9/14
to caelum-...@googlegroups.com
Qual a versão do weld que você está usando?

Sent from my iPhone

Shander Lyrio

unread,
May 9, 2014, 6:55:33 AM5/9/14
to caelum-...@googlegroups.com

Rodrigo,

A recomendada na documentação do VRaptor, 2.1.2.Final. Mas antes de
enviar a mensagem tentei também com a última 2.2.0.Final e o erro é
exatamente o mesmo.

Para qualquer uma das duas as rotas são corretamente impressas no log:

07:52:58,895 INFO [DefaultRouteBuilder ]
/clientes [ALL] -> public void
br.com.nucleo45.logist.HomeController.clientes()
07:52:58,901 INFO [DefaultRouteBuilder ]
/cliente/{codcliente} [ALL] -> public void
br.com.nucleo45.logist.HomeController.cliente(java.lang.Integer)

À disposição,

--
Shander Lyrio

Rodrigo Turini

unread,
May 9, 2014, 7:05:21 AM5/9/14
to caelum-...@googlegroups.com
Pode mandar o log de DEBUG do pacote do Weld e VRaptor?

Sent from my iPhone
> --
> You received this message because you are subscribed to the Google Groups "caelum-vraptor" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to caelum-vrapto...@googlegroups.com.
> To post to this group, send email to caelum-...@googlegroups.com.
> Visit this group at http://groups.google.com/group/caelum-vraptor.
> For more options, visit https://groups.google.com/d/optout.

Shander Lyrio

unread,
May 9, 2014, 8:42:13 AM5/9/14
to caelum-...@googlegroups.com

Rodrigo,

Antes de sua mensagem eu peguei o projeto e coloquei ele no Wildfly 8.0
Final, retirei as dependências que não eram mais necessárias no POM e
esta rota funcionou conforme esperado. Muito mais rápido que no Tomcat
puro alias.

O problema é que no Wildfly a rota padrão @Path("/") parou de funcionar,
ele envia direto para o index.jsp que está na raiz sem passar pelo
VRaptor. Todas as outras rotas funcionam menos a raiz.

Sabe o que pode ser?

--
Shander Lyrio

Rodrigo Turini

unread,
May 9, 2014, 11:55:44 AM5/9/14
to caelum-...@googlegroups.com
pois é Shander, no wildfly por alguma razão o mapping do server está tendo 
prioridade sobre o do VRaptor na /, eu abri uma issue pra isso faz alguns dias


vou tentar dar uma olhada nessa issue no final de semana, bem bizarro isso

Rodrigo Turini
Caelum | Ensino e Inovação
www.caelum.com.br



To unsubscribe from this group and stop receiving emails from it, send an email to caelum-vraptor+unsubscribe@googlegroups.com.
To post to this group, send email to caelum-vraptor@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "caelum-vraptor" group.
To unsubscribe from this group and stop receiving emails from it, send an email to caelum-vraptor+unsubscribe@googlegroups.com.
To post to this group, send email to caelum-vraptor@googlegroups.com.

Otávio Garcia

unread,
May 9, 2014, 12:19:28 PM5/9/14
to caelum-...@googlegroups.com

Estranho porque eu uso assim e funciona bem. Meu / é um método que monta uma dashboard.

No caso de vocês o / é um arquivo ou um método de  controler?

Contexto root ou sub contexto?

Connected with Motocast™

Rodrigo Turini

unread,
May 9, 2014, 12:23:04 PM5/9/14
to caelum-...@googlegroups.com
no meu teste o / era o método index do blank-project. No lugar dele mandar pro 
index.jsp ele está mandando pro index.html, que mostra you should not see this

Rodrigo Turini
Caelum | Ensino e Inovação
www.caelum.com.br



--
You received this message because you are subscribed to the Google Groups "caelum-vraptor" group.
To unsubscribe from this group and stop receiving emails from it, send an email to caelum-vrapto...@googlegroups.com.
To post to this group, send email to caelum-...@googlegroups.com.

Otávio Garcia

unread,
May 9, 2014, 1:11:59 PM5/9/14
to caelum-...@googlegroups.com

Isso é configurado no web.xml, node welcome-file, filho de jsp-config.

Faz um teste para ver se é isso. No meu caso eu não tenho nada nestas tags.

Connected with Motocast™

Rodrigo Turini

unread,
May 9, 2014, 1:41:38 PM5/9/14
to caelum-...@googlegroups.com
acho que não é... no web.xml do blank não tem o welcome-files

Rodrigo Turini
Caelum | Ensino e Inovação
www.caelum.com.br



Vitor de Moraes

unread,
May 9, 2014, 1:59:37 PM5/9/14
to caelum-...@googlegroups.com, rodrigo...@caelum.com.br
Eu estou usando Wildfly 8.0 final no meu projeto e está funcionando normal.

Sem configuração de welcome-files
Reply all
Reply to author
Forward
0 new messages