Scan fora do WEB-INF/classes [Publicar JAR ao inves de .class]

206 views
Skip to first unread message

Deivid Cunha Martins

unread,
Apr 9, 2012, 1:55:50 PM4/9/12
to caelum-vraptor
Boa tarde pessoal,

Preciso entregar minha aplicação em um Jar no WEB-INF/lib ao inves de
entregar arquivos .class no WEB-INF/classes.

Como faço para o Scanner do VRaptor olhar o WEB-INF/lib ao inves do
WEB-INF/classes?

Tentei o modo abaixo no web.xml, mas não funcionou.
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>
meus.pacotes
</param-value>
</context-param>

Estou fazendo o deploy de um EAR.

Abs

Lucas Cavalcanti

unread,
Apr 9, 2012, 2:48:55 PM4/9/12
to caelum-...@googlegroups.com
é um ear no JBoss?

2012/4/9 Deivid Cunha Martins <dcmd...@gmail.com>

--
You received this message because you are subscribed to the Google Groups "caelum-vraptor" group.
To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/caelum-vraptor?hl=en.


Deivid Cunha Martins

unread,
Apr 9, 2012, 3:05:16 PM4/9/12
to caelum-vraptor
Lucas,

No WebSphere.

On Apr 9, 3:48 pm, Lucas Cavalcanti <lucasmrtu...@gmail.com> wrote:
> é um ear no JBoss?
>
> 2012/4/9 Deivid Cunha Martins <dcmdei...@gmail.com>

Lucas Cavalcanti

unread,
Apr 9, 2012, 3:08:38 PM4/9/12
to caelum-...@googlegroups.com
você gerou o jar pelo eclipse? se sim, vc precisa marcar o checkbox "include directory entries"

Deivid Cunha Martins

unread,
Apr 9, 2012, 4:00:16 PM4/9/12
to caelum-vraptor
Estou gerando pelo ANT mesmo.

As classes estão sendo compiladas no modo de Debug=true, de resto não
tem nada de adicional.
Tenho que adicionar algo no build do ANT?
Tentei pelo método de colocar no META-INF/
br.com.caelum.vraptor.packages e ele tambem tentou scannear o WEB-INF/
classes.

Acontecendo exceção
[4/9/12 16:53:14:846 GMT-03:00] 00005b1f WebApp E [Servlet
Error]-[Filter [vraptor]: could not be initialized]:
br.com.caelum.vraptor.scan.ScannerException: Could not scan WEB-INF/
classes
at
br.com.caelum.vraptor.scan.ScannotationComponentScanner.scanWebInfClasses(ScannotationComponentScanner.java:
74)
at
br.com.caelum.vraptor.scan.ScannotationComponentScanner.scan(ScannotationComponentScanner.java:
57)
at
br.com.caelum.vraptor.scan.WebAppBootstrapFactory.create(WebAppBootstrapFactory.java:
65)
at
br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:
83)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:110)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:103)
at
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.init(FilterInstanceWrapper.java:
142)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager._loadFilter(WebAppFilterManager.java:
483)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.loadFilter(WebAppFilterManager.java:
397)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.getFilterInstanceWrapper(WebAppFilterManager.java:
254)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.getFilterChain(WebAppFilterManager.java:
314)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:
808)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:
758)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:
711)
at
com.ibm.ws.wswebcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:
115)
at
com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:
894)
at
com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:
819)
at
com.ibm.ws.wswebcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:
113)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:
3574)
at
com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:
269)
at
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:
831)
at
com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:
1478)
at
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:
133)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:
457)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:
515)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:
300)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:
271)
at
com.ibm.ws.ssl.channel.impl.SSLConnectionLink.determineNextChannel(SSLConnectionLink.java:
1069)
at
com.ibm.ws.ssl.channel.impl.SSLConnectionLink.readyInboundPostHandshake(SSLConnectionLink.java:
728)
at com.ibm.ws.ssl.channel.impl.SSLConnectionLink
$MyHandshakeCompletedCallback.complete(SSLConnectionLink.java:415)
at com.ibm.ws.ssl.channel.impl.SSLUtils.handleHandshake(SSLUtils.java:
942)
at
com.ibm.ws.ssl.channel.impl.SSLHandshakeIOCallback.complete(SSLHandshakeIOCallback.java:
70)
at
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:
165)
at
com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:
217)
at
com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:
161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196)
at
com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:
751)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1551)
Caused by: java.io.FileNotFoundException: /usr/WebSphere61/AppServer/
profiles/AppSrv01/installedApps/DesenvCell01/app.ear/app.war/WEB-INF/
classes (A file or directory in the path name does not exist.)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:135)
at java.io.FileInputStream.<init>(FileInputStream.java:95)
at
sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:
85)
at
sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:
176)
at java.net.URL.openStream(URL.java:1044)
at
org.scannotation.archiveiterator.FileProtocolIteratorFactory.create(FileProtocolIteratorFactory.java:
23)
at
org.scannotation.archiveiterator.IteratorFactory.create(IteratorFactory.java:
40)
at org.scannotation.AnnotationDB.scanArchives(AnnotationDB.java:291)
at
br.com.caelum.vraptor.scan.ScannotationComponentScanner.scanWebInfClasses(ScannotationComponentScanner.java:
71)
... 39 more

Criei o diretorio /WEB-INF/classes na mão, mas nenhuma das classes do
JAR foi scanneada.

On Apr 9, 4:08 pm, Lucas Cavalcanti <lucasmrtu...@gmail.com> wrote:
> você gerou o jar pelo eclipse? se sim, vc precisa marcar o checkbox
> "include directory entries"
>

Lucas Cavalcanti

unread,
Apr 9, 2012, 4:27:25 PM4/9/12
to caelum-...@googlegroups.com
tinha um problema parecido com esse no JBoss...

o ear está explodido no servidor? ou seja, ele descompactou o ear?

Deivid Cunha Martins

unread,
Apr 9, 2012, 5:13:58 PM4/9/12
to caelum-vraptor
Isso, ele está descompactado lá.

On Apr 9, 5:27 pm, Lucas Cavalcanti <lucasmrtu...@gmail.com> wrote:
> tinha um problema parecido com esse no JBoss...
>
> o ear está explodido no servidor? ou seja, ele descompactou o ear?
>
> > sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection....

Lucas Cavalcanti

unread,
Apr 9, 2012, 5:16:58 PM4/9/12
to caelum-...@googlegroups.com
Tente usar o static scanning do VRaptor:
https://gist.github.com/1119370

target vraptor-scanning, só acertar os caminhos...

assim o VRaptor não vai tentar scanear as classes em tempo de execução.

Otávio Garcia

unread,
Apr 9, 2012, 7:30:42 PM4/9/12
to caelum-...@googlegroups.com
Qual é a versão do vraptor que você está usando?

Caused by: java.io.FileNotFoundException: /usr/WebSphere61/AppServer/
profiles/AppSrv01/
installedApps/DesenvCell01/app.ear/app.war/WEB-INF/
classes (A file or directory in the path name does not exist.)

Eu não conheço muito bem o WS para entender se ele usa o scannotation com o vfs, que dá alguns problemas dependendo da versão do scannotation.

Você sabe me dizer se esse local que está indicando file-not-found é um diretório expandido ou é o caminho de um WAR/EAR?

Abraço

2012/4/9 Lucas Cavalcanti <lucasm...@gmail.com>

Deivid Cunha Martins

unread,
Apr 10, 2012, 3:20:59 PM4/10/12
to caelum-vraptor
Problema solucianado!

Otávio,

Estou usando o VRaptor 3.4, é um diretorio expandido.
Na estrutura do War criado pelo Ant tinha o diretorio WEB-INF/classes
e ele estava presente no EAR criado pelo Ant, mas ao dar o deploy como
não tinha nenhum arquivo lá, o WebSphere não criava ele.
Criei ele na mão só para um teste e o VRaptor pela configuração do
scanner no web.xml ou no META-INF do jar não "scanneava" essas classes
do meu jar.

Lucas,

Adicionei a target vraptor-scanning e funcionou perfeitamente.
Foi criada a classe StaticProjectBootstrap registrando todos os
componentes e resources que a aplicação esta usando.
Empacotei ela no meu Jar e tudo ok.

[]s
On Apr 9, 8:30 pm, Otávio Garcia <ota...@otavio.com.br> wrote:
> Qual é a versão do vraptor que você está usando?
>
> Caused by: java.io.FileNotFoundException: /usr/WebSphere61/AppServer/
>
> > profiles/AppSrv01/
> > installedApps/DesenvCell01/app.ear/app.war/WEB-INF/
> > classes (A file or directory in the path name does not exist.)
>
> Eu não conheço muito bem o WS para entender se ele usa o scannotation com o
> vfs, que dá alguns problemas dependendo da versão do scannotation.
>
> Você sabe me dizer se esse local que está indicando file-not-found é um
> diretório expandido ou é o caminho de um WAR/EAR?
>
> Abraço
>
> 2012/4/9 Lucas Cavalcanti <lucasmrtu...@gmail.com>
>
>
>
>
>
>
>
> > Tente usar o static scanning do VRaptor:
> >https://gist.github.com/1119370
>
> > target vraptor-scanning, só acertar os caminhos...
>
> > assim o VRaptor não vai tentar scanear as classes em tempo de execução.
>
> ...
>
> read more »

Otávio Garcia

unread,
Apr 10, 2012, 4:15:56 PM4/10/12
to caelum-...@googlegroups.com

Não lembro se o classes é obrigatório conforme a especificação. Caso for opcional, poderíamos retornar um emptyList.

O web.xml é facultativo desde o servlet 3.

Sent from my Motorola Atrix™

Reply all
Reply to author
Forward
0 new messages