Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Erro de runtime em app com vRator 3 e projeto multi-modulos

$
0
0

@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

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>