Vraptor3 + custom scanner

3 respostas
F

Boa noite,
Eu estou segmentando meus projetos dentro do eclipse, desta forma alguns controllers foram removidos do projeto web principal e movidos para projetos adjacentes ( que foram colocados como dependência no projeto web principal);
A Dependência entre os projetos é dada através do maven, meu problema é que os controllers que foram movidos não são localizados pelos Vraptor.
Pesquisei a este respeito e achei uma possível solução, a qual indica uma alteração no web.xml adicionando o parametro “br.com.caelum.vraptor.packages” porém acho que está não seria a melhor opção visto que eu posso ter várias dependência e estas podem mudar conforme o cenário.
Diante disto minha pretenção seria fazer um scaner para os resources, de modo a pegar as dependências do meu projeto web e procurar e registar os componentes. Isso é possível? Se sim poderiam me auxiliar.

Desde já agradeço a atenção.

3 Respostas

G

Nunca vi ninguém fazer isso, mas teoricamente é possível. O pacote de scanning do vraptor está aqui: https://github.com/caelum/vraptor/tree/master/vraptor-core/src/main/java/br/com/caelum/vraptor/scan

Você também terá que alterar a chamada do WebAppBootstrap conforme o container IoC. No caso do Guice é na classe GuiceProvider. Você precisará estender um CustomProvider como descrito aqui: http://vraptor.caelum.com.br/pt/docs/injecao-de-dependencias/

F

garcia-jj, obrigado pelo retorno!
Não compreendi muito bem o que tu disseste, mas eu teria que ter um custom Providers? O que eu necessito é que o Vraptor reconheça os componentes que estão nos projetos que são dependências do meu projeto web principal.

Exemplo

O projetoWeb tem dependência para um projeto X, neste projeto por sua vez eu tenho um controller (@Resource) e este recurso não está acessível no projetoWeb, só preciso que o vraptor passe a reconhecer este recurso.

G

Eu entendi o que você quer. E a solução para isso é adicionar no web.xml os pacotes, pois assim o vraptor faz o scan deles para você.

Porém você disse que não queria fazer isso, e que queria criar um scanning customizado. E minha resposta foi para criar um scanner customizado :slight_smile:

Se você quer apenas que o vraptor leia resources de outros modulos/projetos, basta adicionar os pacotes no web.xml.

Se você quiser criar um scanner customizado, basta seguir as instruções que te passei acima.

Criado 12 de abril de 2013
Ultima resposta 12 de abr. de 2013
Respostas 3
Participantes 2