Hello group, I've seen other people with similar problems to mine, however none of the solutions presented are working here. Hopefully one of you can point me in the right direction.
I'm attempting to get Guice, JPA, and Shiro all to play nice with each other (and Wicket, once this is nailed down). I'm trying to deploy the following onto resin-4.0.29: *web.xml - * <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>MyApp</display-name> <filter> <filter-name>GuiceFilter</filter-name> <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> </filter> <filter-mapping> <filter-name>GuiceFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>my.app.guice.ServletBootstrap</listener-class> </listener> </web-app> *ServletBootstrap.class - * public class ServletBootstrap extends GuiceServletContextListener { private ServletContext servletContext; @Override public void contextInitialized(ServletContextEvent servletContextEvent) { servletContext = servletContextEvent.getServletContext(); super.contextInitialized(servletContextEvent); } @Override protected Injector getInjector() { ServletModule servletModule = new ServletModule() { @Override protected void configureServlets() { super.configureServlets(); install(new JpaPersistModule("serverPersistenceUnit")); install(new WebSecurityModule(servletContext)); filter("/*").through(PersistFilter.class); filter("/*").through(GuiceShiroFilter.class); } }; return Guice.createInjector(servletModule); } } *WebSecurityModule.class - *public class WebSecurityModule extends ShiroWebModule { public WebSecurityModule(ServletContext servletContext) { super(servletContext); } @Override protected void configureShiroWeb() { bindRealm().to(BaseRealm.class); addFilterChain("/**", ANON); } }* BaseRealm.class - * public class BaseRealm extends AuthorizingRealm { @Inject private SecurityDAO securityDAO; @Inject private UserDAO userDAO; public BaseRealm() { setName("BaseRealm"); } @Override protected SimpleAuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken; String username = token.getUsername(); User user = securityDAO.findUserByUsername(username); if (user != null) { return new SimpleAuthenticationInfo(user.getId(), user.getPasswordHash(), getName()); } else { return null; } } @Override protected SimpleAuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { Long userId = (Long) principalCollection.fromRealm(getName()).iterator().next(); User user = userDAO.find(userId); if (user != null) { SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); List<String> permissions = identifyPermissions(user); info.addStringPermissions(permissions); return info; } else { return null; } } private List<String> identifyPermissions(User user) { List<String> permissions = new ArrayList<String>(); if (user.isCreator()) { permissions.add("repository:create"); } for (Long id : securityDAO.findReposOwnedByUser(user)) { permissions.add("repository:delete:" + id); permissions.add("repository:" + id); } for (Long id : securityDAO.findReposAdministerableByUser(user)) { permissions.add("repository:" + id); } for (Long id : securityDAO.findReposContributableByUser(user)) { permissions.add("repository:" + id + ":create"); permissions.add("repository:" + id + ":view"); } for (Long id : securityDAO.findReposViewableByUser(user)) { permissions.add("repository:" + id + ":view"); permissions.add("repository:" + id + ":create:note"); } return permissions; } } And when I run it, I get this: 03 15:42:02.859] {main} com.google.inject.CreationException: Guice creation errors: 1) Error in custom provider, java.lang.NullPointerException while locating com.google.inject.persist.jpa.JpaPersistService while locating javax.persistence.EntityManager for field at com.brightandbrown.bbfiles.data.daos.SecurityDAO.em(SecurityDAO.java:10) while locating com.brightandbrown.bbfiles.data.daos.SecurityDAO for field at com.brightandbrown.bbfiles.shiro.BaseRealm.securityDAO(BaseRealm.java:15) while locating com.brightandbrown.bbfiles.shiro.BaseRealm while locating org.apache.shiro.realm.Realm annotated with @com.google.inject.multibindings.Element(setName=,uniqueId=3) at org.apache.shiro.guice.ShiroModule.bindRealm(ShiroModule.java:103) while locating java.util.Set<org.apache.shiro.realm.Realm> while locating java.util.Collection<org.apache.shiro.realm.Realm> for parameter 0 at org.apache.shiro.web.mgt.DefaultWebSecurityManager.<init>(DefaultWebSecurityManager.java:85) at org.apache.shiro.guice.ShiroModule.configure(ShiroModule.java:55) while locating org.apache.shiro.mgt.SecurityManager Caused by: java.lang.NullPointerException at com.google.inject.persist.jpa.JpaPersistService.begin(JpaPersistService.java:70) at com.google.inject.persist.jpa.JpaPersistService.get(JpaPersistService.java:50) at com.google.inject.persist.jpa.JpaPersistService.get(JpaPersistService.java:34) at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:55) at com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:53) at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:94) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254) at com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:53) at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:94) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254) at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54) at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:978) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031) at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:974) at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:326) at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:220) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40) at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54) at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38) at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254) at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.Scopes$1$1.get(Scopes.java:65) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40) at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:204) at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:198) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024) at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:198) at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:179) 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:72) at com.google.inject.Guice.createInjector(Guice.java:62) at com.brightandbrown.bbfiles.guice.ServletBootstrap.getInjector(ServletBootstrap.java:37) at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45) at com.brightandbrown.bbfiles.guice.ServletBootstrap.contextInitialized(ServletBootstrap.java:20) at com.caucho.server.webapp.WebApp.start(WebApp.java:3575) at com.caucho.env.deploy.DeployController.startImpl(DeployController.java:680) at com.caucho.env.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:77) at com.caucho.env.deploy.DeployController.startOnInit(DeployController.java:530) at com.caucho.env.deploy.DeployContainer.start(DeployContainer.java:170) at com.caucho.server.webapp.WebAppContainer.start(WebAppContainer.java:728) at com.caucho.server.host.Host.start(Host.java:677) at com.caucho.env.deploy.DeployController.startImpl(DeployController.java:680) at com.caucho.env.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:77) at com.caucho.env.deploy.DeployController.startOnInit(DeployController.java:530) at com.caucho.env.deploy.DeployContainer.start(DeployContainer.java:170) at com.caucho.server.host.HostContainer.start(HostContainer.java:542) at com.caucho.server.cluster.ServletService.start(ServletService.java:1337) at com.caucho.server.cluster.ServletSystem.start(ServletSystem.java:72) at com.caucho.env.service.ResinSystem.startServices(ResinSystem.java:529) at com.caucho.env.service.ResinSystem.start(ResinSystem.java:496) at com.caucho.server.resin.Resin.start(Resin.java:817) at com.caucho.server.resin.Resin.initMain(Resin.java:949) at com.caucho.server.resin.Resin.main(Resin.java:1398) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) Any help would be greatly appreciated! -- You received this message because you are subscribed to the Google Groups "google-guice" group. To view this discussion on the web visit https://groups.google.com/d/msg/google-guice/-/u9HN_8RvJCEJ. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-guice?hl=en.
