Deploy vraptor + ScannotationComponentScanner

Olá pessoal,

Criei um projeto (vraptor) com nome application e quando gerei o war com nome application##001 e fiz o deploy aconteceu o seguinte erro:

15/11/2011 19:23:41 org.apache.catalina.core.StandardContext filterStart
GRAVE: Exception starting filter vraptor
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 org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
	at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
Caused by: java.io.FileNotFoundException: /Users/laeciofreitas/Documents/Ferramentas/apache-tomcat-7.0.22/webapps/application (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:120)
	at java.io.FileInputStream.<init>(FileInputStream.java:79)
	at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
	at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
	at java.net.URL.openStream(URL.java:1010)
	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)
	... 17 more
15/11/2011 19:23:42 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
15/11/2011 19:23:42 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
15/11/2011 19:23:42 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@59bdbfec')

Projetos sem o vraptor funcionam normalmente!

atenciosamente,
Laécio Freitas Chaves.

Acho que o servletContext.getRealPath ainda retorna application/WEB-INF/classes, mas deveria ser application##001/WEB-INF/classes.

tente não colocar caracteres estranhos no nome do seu war… # não é um nome válido (define fragmentos de url, daí quebra a lógica do vraptor)

Lucas,

Estou tentando usar o Parallel Deployment do tomcat.
Se existir um war com application##001 e no próximo deploy for enviado application##002.
O próximo usuário que acessar a aplicação vai receber as atualizações de application##002.
Ou seja, Zero-downtime.

entendi…

só troque o ## por - que vai ficar certo

application-001
application-002
etc

Lucas,
Infelizmente o tomcat usa a convenção ## para o Parallel Deployment funcionar, não funciona com - .

Para quem for utilizar o Parallel Deployment, tem que usar a lib do scannotation com as alterações que eu fiz:


git clone git@github.com:laeciofreitas/scannotation.git
cd scannotation
mvn install