@danieldestro escreveu:
Eu tenho uma app web que esta implementada e funciona muito bem com:
- Java 8
- vRaptor 3.5.5
- Spring 4.3.5
- Hibernate 4.3.11
- Maven 3.3.9
- Tomcat 8.5.9
Porém, quando alterei o projeto de single para multi-módulos (Maven) a aplicação parou de funcionar e dá erro em tempo de execução. Aparentemente sobe normalmente, mas quando acesso a primeira página encontro um erro.
Agora tenho 3 módulos (parent, core e web), antes era apenas um módulo comum.
Quando o Apache (embedded no Eclipse / STS) sobe, ele loga normalmente, como logava antes na versão sem modificar, conforme alguns trechos de exemplo. Ou seja, ele reconhece os Controllers.
INFO [BasicConfiguration ] Using class br.com.caelum.vraptor.ioc.spring.SpringProvider as Container Provider INFO [DefaultSpringLocator] Using an XmlWebApplicationContext, searching for applicationContext.xml INFO [BasicConfiguration ] br.com.caelum.vraptor.scanning = null INFO [WebAppBootstrapFactory] Dynamic WebAppBootstrap found. ERROR [ScannotationComponentScanner] There's no occurence of package br.com.caelum.vraptor.util.hibernate in classpath INFO [InjectionBeanPostProcessor] JSR-330 'javax.inject.Inject' annotation found and supported for autowiring INFO [LogHelper ] HHH000204: Processing PersistenceUnitInfo [ name: myapp ...] INFO [Version ] HHH000412: Hibernate Core {4.3.11.Final} ... ... INFO [SchemaUpdate ] HHH000232: Schema update complete INFO [DefaultConverters ] Registering bundled converters INFO [LinkToHandler ] Registering linkTo component INFO [DefaultRouteBuilder ] /analytics/profile [ALL] -> ProfileController.profile(Integer) INFO [DefaultRouteBuilder ] /analytics/matches [ALL] -> ProfileController.matches(Integer) ... ... INFO [VRaptor ] VRaptor 3.5.5 successfuly initialized org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler [http-nio-8080] org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler [ajp-nio-8009] org.apache.catalina.startup.Catalina start INFO: Server startup in 15140 ms
Porém, quando vou chamar alguma URL encontro o seguinte erro:
SEVERE: Servlet.service() for servlet [default] in context with path [/myapp] threw exception org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityController': Unsatisfied dependency expressed through field 'securityLogic'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.myapp.security.logic.SecurityLogic' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@javax.inject.Inject()} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) ... ... Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.myapp.security.logic.SecurityLogic' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@javax.inject.Inject()} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1474) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1102) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1064) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585) ... 60 more
Imagino que o erro pode se dever ao fato de que a classe SecurityLogic, que possui anotação @Component do vRaptor3, pertence ao módulo core e o Maven gera um JAR do core que fica dentro do WEB-INF/lib do WAR gerado. Acredito que o vRaptor não está conseguindo fazer o scanning das classes de dentro do meu JAR.
Eu ainda uso a mesma configuração do plugin do WAR com archiveClass = false, mas não rolou. O JAR ainda é criado:
<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat8-maven-plugin</artifactId> <version>3.0-r1655215</version> <configuration> <!-- VRaptor, by default, only scan classes that does not reside within JARs --> <archiveClasses>false</archiveClasses> </configuration> </plugin> </plugins> </build>
Como solucionar este problema?
Grato
Mensagens: 1
Participantes: 1