Pessoal,
Estou tendo alguns problemas para configurar um framework de DI + VRaptor + Shiro, tentei o Spring acabou que tive problemas e resolvi alterar para Guice, que estou tendo problemas tambem.
O Problema é o seguinte:
Criei um Provider como diz na documentação do Vraptor:
public class OpenGuiceProvider extends GuiceProvider {
ServletContext context;
@Override
protected void registerCustomComponents(ComponentRegistry registry) {
}
@Override
protected Module customModule() {
final Module module = super.customModule();
return new ServletModule() {
@Override
protected void configureServlets() {
super.configureServlets();
module.configure(binder());
install(new OpenShiroWebModule(context));
}
};
}
@Override
public void start(ServletContext context) {
this.context = context;
super.start(context);
}
}
Neste Provider, instalo o modulo de integração do Shiro com o Guice.
[code]
public class OpenShiroWebModule extends ShiroWebModule {
public OpenShiroWebModule(ServletContext sc) {
super(sc);
}
@Override
protected void configureShiroWeb() {
bindRealm().to( OpenRealm.class );
bindConstant().annotatedWith(Names.named("shiro.loginUrl")).to("/index.html");
}
}[/code]
Porem ao executar o código, recebo o seguinte erro:
Grave: Exception starting filter vraptor
com.google.inject.CreationException: Guice creation errors:
1) Error notifying InjectionListener br.com.caelum.vraptor.ioc.guice.ScopeLifecycleListener$LifecycleExecutor@c388a2 of org.apache.shiro.guice.ShiroModule$1.
Reason: java.lang.NullPointerException
at org.apache.shiro.guice.ShiroModule.configure(ShiroModule.java:77)
1 error
at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:435)
at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:175)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)
at com.google.inject.Guice.createInjector(Guice.java:95)
at com.google.inject.Guice.createInjector(Guice.java:83)
at br.com.caelum.vraptor.ioc.guice.GuiceProvider.start(GuiceProvider.java:98)
at br.com.opengti.project.guice.provider.OpenGuiceProvider.start(OpenGuiceProvider.java:44)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:108)
at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:102)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NullPointerException
at br.com.caelum.vraptor.ioc.guice.RequestCustomScope.registerDestroyListener(RequestCustomScope.java:83)
at br.com.caelum.vraptor.ioc.guice.ScopeLifecycleListener$LifecycleExecutor.afterInjection(ScopeLifecycleListener.java:91)
at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:97)
at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:89)
at com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:147)
at com.google.inject.internal.Initializer.injectAll(Initializer.java:92)
at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:173)
... 21 more
Ago 12, 2012 2:31:48 AM org.apache.catalina.core.StandardContext startInternal
Grave: Error filterStart
A parte do código onde da problema é no Shiro Modulo do jar de integração do shiro na linha 77:
bind(DestroyableInjectionListener.DestroyableRegistry.class).toInstance(registry);
Alguem poderia me ajudar a sanar esse problema?
Obrigado
Gabriel