Arquitetura interna do VRpator 4

30 views
Skip to first unread message

Daniel Bussade

unread,
Sep 23, 2016, 7:07:38 AM9/23/16
to caelum-vraptor

Fala galera,


Estou estudando as apostilas Fj-11 e FJ-21 após ficar algum tempo afastado da programação. Em um capítulo da apostila FJ-21 fala sobre Frameworks MVC e explica diferentes maneiras que um Framework tem de implementar as "lógicas" da aplicação. Alguns usam uma interface em comum, outros obrigam a herdar classes do Framework e por fim no caso do VRaptor e Spring MVC usam annotations.

Gostaria de entender como o VRaptor e o Spring MVC fazem isso? Tentei olhar no código-fonte de ambos mas não encontrei as respostas que eu queria. Basicamente tenho as seguintes dúvidas:

1) Ao anotar uma classe com @Controller automaticamente todos os métodos dessa classe viram URLS que podem ser acessadas pela aplicação. Quais as classes fazem isso? E como elas fazem? Tentei procurar por isAnnotationPresente(Controller.class), imaginando que teria uma Servlet principal que faria um Scan nos pacotes e recuperasse as classes que teriam essa anotação, porém não encontrei nenhuma classe.

2) Quais as classes do VRaptor fazem o papel de orquestrador? Pois nem é preciso declarar nada no Web.xml. Imaginei que teria algum Servlet mapeado com url-pattern "/" que interceptaria todas as requisições e faria esse papel. Porém também não consegue achar tal classe.

Enfim, gostaria de entender melhor o processo como um todo.


Obrigado

Rodrigo Turini

unread,
Sep 23, 2016, 1:35:18 PM9/23/16
to caelum-vraptor
Oi Daniel

1) Ao anotar uma classe com @Controller automaticamente todos os métodos dessa classe viram URLS que podem ser acessadas pela aplicação. Quais as classes fazem isso? E como elas fazem? Tentei procurar por isAnnotationPresente(Controller.class), imaginando que teria uma Servlet principal que faria um Scan nos pacotes e recuperasse as classes que teriam essa anotação, porém não encontrei nenhuma classe.

O VRaptor 4 usa o CDI pra descobrir e registrar os controllers, converters, interceptors e etc. Temos um bean chamado StereotypesRegistry que faz o mapping da nossa anotação pra um qualifier do CDI, que faz a parte dele no trabalho. A Caelum e a Alura tem cursos que abordam CDI, talvez você queira dar uma olhada lá.

> 2) Quais as classes do VRaptor fazem o papel de orquestrador? Pois nem é preciso declarar nada no Web.xml. Imaginei que teria algum Servlet mapeado com url-pattern "/" que interceptaria todas as requisições e faria esse papel. Porém também não consegue achar tal classe.

O VRaptor é um filtro. Você não precisa registrar no web.xml porque ele já tem um @WebFilter nele. Do filtro pra frente o fluxo todo é controlado por eventos do CDI. Essa página mostra o pipeline de eventos:


--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.

Valério

unread,
Sep 23, 2016, 3:02:17 PM9/23/16
to caelum-vraptor
Rodrigo, aproveitando o ensejo.. alguma previsão pra versão atual do VRaptor ser lançada como release (Final)?

Att,

Valério

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

Rodrigo Turini

unread,
Sep 23, 2016, 3:26:08 PM9/23/16
to caelum-vraptor
Oi Valério! 

Eu devo fazer um release RC entre hoje e amanhã, e depois de uma semana em testes, da versão final.

aviso aqui na lista assim que estiver no ar

Em sex, 23 de set de 2016 às 16:02, Valério <valeri...@gmail.com> escreveu:
Rodrigo, aproveitando o ensejo.. alguma previsão pra versão atual do VRaptor ser lançada como release (Final)?

Att,

Valério
2016-09-23 14:35 GMT-03:00 Rodrigo Turini <rodrigo...@caelum.com.br>:
Oi Daniel

1) Ao anotar uma classe com @Controller automaticamente todos os métodos dessa classe viram URLS que podem ser acessadas pela aplicação. Quais as classes fazem isso? E como elas fazem? Tentei procurar por isAnnotationPresente(Controller.class), imaginando que teria uma Servlet principal que faria um Scan nos pacotes e recuperasse as classes que teriam essa anotação, porém não encontrei nenhuma classe.

O VRaptor 4 usa o CDI pra descobrir e registrar os controllers, converters, interceptors e etc. Temos um bean chamado StereotypesRegistry que faz o mapping da nossa anotação pra um qualifier do CDI, que faz a parte dele no trabalho. A Caelum e a Alura tem cursos que abordam CDI, talvez você queira dar uma olhada lá.

> 2) Quais as classes do VRaptor fazem o papel de orquestrador? Pois nem é preciso declarar nada no Web.xml. Imaginei que teria algum Servlet mapeado com url-pattern "/" que interceptaria todas as requisições e faria esse papel. Porém também não consegue achar tal classe.

O VRaptor é um filtro. Você não precisa registrar no web.xml porque ele já tem um @WebFilter nele. Do filtro pra frente o fluxo todo é controlado por eventos do CDI. Essa página mostra o pipeline de eventos:

Em sex, 23 de set de 2016 às 08:07, Daniel Bussade <daniel...@gmail.com> escreveu:

Fala galera,


Estou estudando as apostilas Fj-11 e FJ-21 após ficar algum tempo afastado da programação. Em um capítulo da apostila FJ-21 fala sobre Frameworks MVC e explica diferentes maneiras que um Framework tem de implementar as "lógicas" da aplicação. Alguns usam uma interface em comum, outros obrigam a herdar classes do Framework e por fim no caso do VRaptor e Spring MVC usam annotations.

Gostaria de entender como o VRaptor e o Spring MVC fazem isso? Tentei olhar no código-fonte de ambos mas não encontrei as respostas que eu queria. Basicamente tenho as seguintes dúvidas:

1) Ao anotar uma classe com @Controller automaticamente todos os métodos dessa classe viram URLS que podem ser acessadas pela aplicação. Quais as classes fazem isso? E como elas fazem? Tentei procurar por isAnnotationPresente(Controller.class), imaginando que teria uma Servlet principal que faria um Scan nos pacotes e recuperasse as classes que teriam essa anotação, porém não encontrei nenhuma classe.

2) Quais as classes do VRaptor fazem o papel de orquestrador? Pois nem é preciso declarar nada no Web.xml. Imaginei que teria algum Servlet mapeado com url-pattern "/" que interceptaria todas as requisições e faria esse papel. Porém também não consegue achar tal classe.

Enfim, gostaria de entender melhor o processo como um todo.


Obrigado

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

Valério

unread,
Sep 24, 2016, 4:06:38 PM9/24/16
to caelum-vraptor

Rodrigo, essa politica de lancamento de voces se baseia em algum guideline? Versoes snapshot, quantas RC sao lancadas, tempo de espera entre elas e entao a versao final... tem alguma base ou voces vao conforme  dá?


Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

Rodrigo Turini

unread,
Sep 26, 2016, 8:26:08 PM9/26/16
to caelum-vraptor
Oi Valério

Normalente nos guiamos pelas issues e feedbacks dos usuários nos RCs lançados. 
Eu procuro atualizar meus sistemas com os snapshots antes do release.

E claro que vocês podem e devem sempre cobrar aqui na lista (;

ps: tive um imprevisto e ainda não consegui lançar esse último RC, mas está no topo das prioridades.
Eu aviso aqui

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

Rodrigo Turini

unread,
Sep 29, 2016, 6:28:58 AM9/29/16
to caelum-vraptor
Oi pessoal

o release do RC5 já está disponível, podem testar e nos dar um feedback?


Sendo positivo, o próximo será o final. 

um abraço

Valério

unread,
Sep 29, 2016, 9:39:16 AM9/29/16
to caelum-vraptor
Vou apontar alguns sistemas aqui pra ele e dar uma olhada, Rodrigo :-)

Pra vocês saberem: sou arquiteto da CVM (Comissão de Valores Mobiliários) e todos os novos sistemas estão sendo desenvolvidos com VRaptor, seja um MVC padrão com JSP e JSTL ou junto com o AngularJS. Estamos gostando muito pois se integra bem com o Java EE (nossa escolha como plataforma corporativa), é simples e sua curva de aprendizado é bem suave. Inclusive "apresentamos" o VRaptor pra duas empresas que prestam/prestaram serviços pra nós (Radix e Squadra) e ambas deram feedback muito positivo. Três anos depois da decisão, acho que podemos dizer que foi uma escolha certa. Na época, avaliamos o Struts2, o Play, o Spring MVC (muito bom também, mas carregado de muitas configurações e funcionalidades que não usaríamos na maior parte do tempo.. tornando o aprendizado mais difícil) e o VRaptor. Ser brazuca também foi um diferencial, né =P


Parabéns pelo trabalho!


Att,

Valério

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.

Rodrigo Turini

unread,
Sep 29, 2016, 9:49:56 AM9/29/16
to caelum-vraptor
Oi Valério

Legal saber que estão usando e gostando, estamos pensando em algumas novidades para o framework em um futuro próximo.

Vou esperar pelo seu feedback (;



Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages