[
https://issues.apache.org/jira/browse/SHIRO-493?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14188760#comment-14188760
]
Markus W Mahlberg commented on SHIRO-493:
-----------------------------------------
Funny enough, most of the issues are to overcome by manually binding the
FilterChainResolver interface to the PathMatchingFilterChainResolver
{code:borderStyle=solid}
/* Is the only implementing class anyway */
bind(FilterChainResolver.class).to(PathMatchingFilterChainResolver.class).in(Scopes.SINGLETON);
{code}
and creating providers for SecurityManager and Realm:
{code:title=YourModule.java|borderStyle=solid}
@Provides
@Singleton
WebSecurityManager securityManager(Realm realm) {
DefaultWebSecurityManager sm = new DefaultWebSecurityManager();
sm.setRealm(realm);
return sm;
}
@Provides
@Singleton
Realm iniRealm() {
return new IniRealm();
}
{code}
However, when doing this and installing the filters with
{code:title=YourModule.java|borderStyle=solid}
YourExtensionOfShiroWebModule.bindGuiceFilter(binder());
{code}
the following exception is thrown during the servlet initialization:
{code}
[main] WARN org.eclipse.jetty.util.component.AbstractLifeCycle - FAILED
o.e.j.s.ServletContextHandler@2756b0ce{/,null,STARTING}:
javax.servlet.ServletException: Filters must be bound as singletons.
Key[type=org.apache.shiro.guice.web.GuiceShiroFilter, annotation=[none]] was
not bound in singleton scope.
javax.servlet.ServletException: Filters must be bound as singletons.
Key[type=org.apache.shiro.guice.web.GuiceShiroFilter, annotation=[none]] was
not bound in singleton scope.
at
com.google.inject.servlet.FilterDefinition.init(FilterDefinition.java:98)
at
com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:99)
at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:220)
at
org.eclipse.jetty.servlet.FilterHolder.initialize(FilterHolder.java:138)
at
org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:850)
at
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:298)
at
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:742)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
at org.eclipse.jetty.server.Server.start(Server.java:388)
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
at org.eclipse.jetty.server.Server.doStart(Server.java:355)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
...
{code}
But I am pretty sure this is a different problem, if I am not wrong with that.
> shiro-guice not working with the last guice 4 beta
> --------------------------------------------------
>
> Key: SHIRO-493
> URL: https://issues.apache.org/jira/browse/SHIRO-493
> Project: Shiro
> Issue Type: Bug
> Components: Integration: Guice
> Affects Versions: 1.2.3
> Environment: java version "1.7.0_51"
> Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
> Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
> Reporter: Filipe Sousa
> Assignee: Jared Bunting
>
> Switching from guice 3.0 to guice 4 beta is causing some problems.
> public class SecurityModule extends ShiroWebModule {
> public SecurityModule(ServletContext servletContext) {
> super(servletContext);
> }
> @Override
> protected void configureShiroWeb() {
> bind(Realm.class).to(JdbcRealm.class);
> }
> }
> com.google.inject.CreationException: Guice creation errors:
> 1) No implementation for java.util.Set<org.apache.shiro.realm.Realm> was
> bound.
> at org.apache.shiro.guice.ShiroModule.configure(ShiroModule.java:74) (via
> modules: pt.egoi.megan.guice.MeganModule ->
> pt.egoi.megan.security.SecurityModule)
> 1 error
> at
> com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:449)
> ~[guice-4.0-SNAPSHOT.jar:na]
> at
> com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:155)
> ~[guice-4.0-SNAPSHOT.jar:na]
> at
> com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
> ~[guice-4.0-SNAPSHOT.jar:na]
> at com.google.inject.Guice.createInjector(Guice.java:96)
> ~[guice-4.0-SNAPSHOT.jar:na]
> at com.google.inject.Guice.createInjector(Guice.java:84)
> ~[guice-4.0-SNAPSHOT.jar:na]
> at pt.egoi.megan.guice.GuiceListener.getInjector(GuiceListener.java:20)
> ~[classes/:na]
> at
> com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:47)
> ~[guice-servlet-4.0-SNAPSHOT.jar:na]
> at
> pt.egoi.megan.guice.GuiceListener.contextInitialized(GuiceListener.java:31)
> ~[classes/:na]
> at
> org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:746)
> ~[jetty-server-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:238)
> ~[jetty-servlet-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1240)
> ~[jetty-webapp-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:689)
> ~[jetty-server-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:482)
> ~[jetty-webapp-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
> [jetty-util-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)
> [jetty-deploy-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)
> [jetty-deploy-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)
> [jetty-deploy-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)
> [jetty-deploy-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)
> [jetty-deploy-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)
> [jetty-deploy-7.6.14.v20131031.jar:7.6.14.v20131031]
> at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:615)
> [jetty-util-7.6.14.v20131031.jar:7.6.14.v20131031]
> at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)
> [jetty-util-7.6.14.v20131031.jar:7.6.14.v20131031]
> at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)
> [jetty-util-7.6.14.v20131031.jar:7.6.14.v20131031]
> at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)
> [jetty-util-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
> [jetty-util-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)
> [jetty-deploy-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
> [jetty-util-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)
> [jetty-deploy-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)
> [jetty-deploy-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
> [jetty-util-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81)
> [jetty-util-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)
> [jetty-server-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)
> [jetty-server-7.6.14.v20131031.jar:7.6.14.v20131031]
> at org.eclipse.jetty.server.Server.doStart(Server.java:281)
> [jetty-server-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
> [jetty-util-7.6.14.v20131031.jar:7.6.14.v20131031]
> at
> org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1274)
> [jetty-xml-7.6.14.v20131031.jar:7.6.14.v20131031]
> at java.security.AccessController.doPrivileged(Native Method)
> [na:1.7.0_51]
> at
> org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1197)
> [jetty-xml-7.6.14.v20131031.jar:7.6.14.v20131031]
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)