methodInterceptor not resolving it dependencies

140 views
Skip to first unread message

transmeta01

unread,
Nov 15, 2012, 9:13:32 PM11/15/12
to google...@googlegroups.com
I have a method interceptor that has a number of dependencies (all guice managed objects), as explained in http://code.google.com/p/google-guice/wiki/AOP
the use of requestInjection should have guice inject the dependencies auto-magically. But, when the interceptor is called, all the dependencies are null. In my case, all dependencies are in the default scope, so I doubt the problem to be a scoping issue. I did a google  and a StackOverflow search, but no case seems to be such as mine...maybe is binding out of order issue...if such thing exist. Any recommendations on who to approach this problem?

Stephan Classen

unread,
Nov 16, 2012, 2:41:04 AM11/16/12
to google...@googlegroups.com
how about posting your interceptor code so we can have a look at it?
> --
> 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/-/Jki7NswRYUwJ.
> To post to this group, send email to google...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-guice...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-guice?hl=en.

Fred Faber

unread,
Nov 15, 2012, 9:35:52 PM11/15/12
to google...@googlegroups.com

It'd be helpful if you posted some code, such as where you request injection and what the interceptor looks like.

On Nov 15, 2012 9:13 PM, "transmeta01" <trans...@gmail.com> wrote:
I have a method interceptor that has a number of dependencies (all guice managed objects), as explained in http://code.google.com/p/google-guice/wiki/AOP
the use of requestInjection should have guice inject the dependencies auto-magically. But, when the interceptor is called, all the dependencies are null. In my case, all dependencies are in the default scope, so I doubt the problem to be a scoping issue. I did a google  and a StackOverflow search, but no case seems to be such as mine...maybe is binding out of order issue...if such thing exist. Any recommendations on who to approach this problem?

--

Richard Mutezintare

unread,
Nov 16, 2012, 10:33:35 AM11/16/12
to google...@googlegroups.com
here is the methodInterceptor: 
public class AuditServiceImpl implements AuditService, MethodInterceptor {
private AuditDao auditDao; 
private PilotStatusDao pilotStatusDao;
private NoteStatusDao noteStatusDao;
private UserService userService;
private SectorService sectorService;
public AuditServiceImpl() {}
@Inject
public AuditServiceImpl(AuditDao auditDao, PilotStatusDao pilotStatusDao, NoteStatusDao noteStatusDao, SectorService sectorService) {
this.auditDao = auditDao;
this.pilotStatusDao = pilotStatusDao;
this.noteStatusDao = noteStatusDao;
}

@Override
@Transactional(rollbackOn = IllegalStateException.class)
public Object invoke(MethodInvocation invocation) throws Throwable {
Note modifiedNote = (Note) invocation.getArguments()[0];
Audit audit = new Audit();
audit.setCreationDate(new Date())
.setLastModifiedDate(new Date())
.setNote(modifiedNote)
.setNoteTime(modifiedNote.getDate())
.setNoteText(modifiedNote.getNoteText())
.setSector(modifiedNote.getSector());
User modifiedBy = (User) invocation.getArguments()[1];
audit.setModifiedBy(modifiedBy);
audit.setPilotStatus(modifiedNote.getPilotStatus());
audit.setNoteStatus(modifiedNote.getNoteStatus());
auditDao.persist(audit);
return invocation.proceed();
}

in the servletModule I have this binding :

AuditServiceImpl auditInterceptor = new AuditServiceImpl(); requestInjection(auditInterceptor); bindInterceptor(Matchers.any(), Matchers.annotatedWith(AuditTrail.class), auditInterceptor);

and the AuditService interface looks like this:

@ImplementedBy(AuditServiceImpl.class)
public interface AuditService {
List<Audit> findAuditBySector(Sector sector);
List<Audit> findAuditByDateRange(Date start, Date end);
List<Audit> findAuditByUser(User user);
List<Audit> findAuditByUser(Long userId);
List<Audit> findAuditByUsername(String username);
List<Audit> findAuditByKeyword(String keyword);
List<Audit> findAuditByKeyword(String... keywords);
Audit saveAudit(Audit auditToSave);

}

Stuart McCulloch

unread,
Nov 16, 2012, 10:40:32 AM11/16/12
to google...@googlegroups.com
^ requestInjection can only perform setter or field injection, it cannot perform constructor injection because the object is already constructed. Your interceptor expects constructor injection, which is why you see null values.

Personally I would try to separate the interceptor into its own class, rather than conflate it with an actual service implementation. Then you would only need to @Inject the service you need to use in the interceptor (with @Inject on a field/setter) which would make the code cleaner and easier to maintain.

Richard Mutezintare

unread,
Nov 16, 2012, 10:48:18 AM11/16/12
to google...@googlegroups.com
Good point about separation of method interception and service implementation... Tried field injection...didn't work, then tried method injection...didn't work either. Here is the exception I am getting: 

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 parameter 0 at com.nashen.dao.AuditDao.<init>(AuditDao.java:19)<|  while locating com.nashen.dao.AuditDao<|    for parameter 0 at com.nashen.service.audit.AuditServiceImpl.setAuditDao(AuditServiceImpl.java:123)<|  at com.nashen.integration.GuiceServletConfig$1.configureServlets(GuiceServletConfig.java:65)<|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.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.SingleParameterInjector.inject(SingleParameterInjector.java:38)<|?at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)<|?at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:83)<|?at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73)<|?at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)<|?at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73)<|?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)<|?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 com.nashen.integration.GuiceServletConfig.getInjector(GuiceServletConfig.java:45)<|?at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45)<|?at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)<|?at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:411)<|?at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)<|?at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:247)<|?at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238)<|?at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)<|?at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)<|?at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)<|?at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)<|?at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)<|?at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)<|?at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)<|?at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)<|?at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)<|?at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81)<|?at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)<|?at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)<|?at org.eclipse.jetty.server.Server.doStart(Server.java:277)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1265)<|?at java.security.AccessController.doPrivileged(Native Method)<|?at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1188)<|?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 org.eclipse.jetty.start.Main.invokeMain(Main.java:468)<|?at org.eclipse.jetty.start.Main.start(Main.java:616)<|?at org.eclipse.jetty.start.Main.main(Main.java:92)<|<|2) Error in custom provider, java.lang.NullPointerException<|  while locating com.google.inject.persist.jpa.JpaPersistService<|  while locating javax.persistence.EntityManager<|    for parameter 0 at com.nashen.dao.PilotStatusDao.<init>(PilotStatusDao.java:14)<|  while locating com.nashen.dao.PilotStatusDao<|    for parameter 0 at com.nashen.service.audit.AuditServiceImpl.setPilotStatusDao(AuditServiceImpl.java:132)<|  at com.nashen.integration.GuiceServletConfig$1.configureServlets(GuiceServletConfig.java:65)<|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.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.SingleParameterInjector.inject(SingleParameterInjector.java:38)<|?at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)<|?at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:83)<|?at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73)<|?at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)<|?at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73)<|?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)<|?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 com.nashen.integration.GuiceServletConfig.getInjector(GuiceServletConfig.java:45)<|?at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45)<|?at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)<|?at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:411)<|?at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)<|?at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:247)<|?at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238)<|?at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)<|?at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)<|?at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)<|?at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)<|?at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)<|?at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)<|?at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)<|?at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)<|?at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)<|?at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81)<|?at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)<|?at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)<|?at org.eclipse.jetty.server.Server.doStart(Server.java:277)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1265)<|?at java.security.AccessController.doPrivileged(Native Method)<|?at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1188)<|?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 org.eclipse.jetty.start.Main.invokeMain(Main.java:468)<|?at org.eclipse.jetty.start.Main.start(Main.java:616)<|?at org.eclipse.jetty.start.Main.main(Main.java:92)<|<|3) Error in custom provider, java.lang.NullPointerException<|  while locating com.google.inject.persist.jpa.JpaPersistService<|  while locating javax.persistence.EntityManager<|    for parameter 0 at com.nashen.dao.NoteStatusDao.<init>(NoteStatusDao.java:14)<|  while locating com.nashen.dao.NoteStatusDao<|    for parameter 0 at com.nashen.service.audit.AuditServiceImpl.setNoteStatusDao(AuditServiceImpl.java:141)<|  at com.nashen.integration.GuiceServletConfig$1.configureServlets(GuiceServletConfig.java:65)<|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.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.SingleParameterInjector.inject(SingleParameterInjector.java:38)<|?at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)<|?at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:83)<|?at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73)<|?at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)<|?at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73)<|?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)<|?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 com.nashen.integration.GuiceServletConfig.getInjector(GuiceServletConfig.java:45)<|?at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45)<|?at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)<|?at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:411)<|?at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)<|?at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:247)<|?at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238)<|?at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)<|?at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)<|?at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)<|?at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)<|?at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)<|?at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)<|?at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)<|?at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)<|?at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)<|?at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81)<|?at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)<|?at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)<|?at org.eclipse.jetty.server.Server.doStart(Server.java:277)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1265)<|?at java.security.AccessController.doPrivileged(Native Method)<|?at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1188)<|?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 org.eclipse.jetty.start.Main.invokeMain(Main.java:468)<|?at org.eclipse.jetty.start.Main.start(Main.java:616)<|?at org.eclipse.jetty.start.Main.main(Main.java:92)<|<|4) Error in custom provider, java.lang.NullPointerException<|  while locating com.google.inject.persist.jpa.JpaPersistService<|  while locating javax.persistence.EntityManager<|    for parameter 0 at com.nashen.dao.UserDao.<init>(UserDao.java:15)<|  while locating com.nashen.dao.UserDao<|    for parameter 0 at com.nashen.service.user.UserServiceImpl.<init>(UserServiceImpl.java:24)<|  while locating com.nashen.service.user.UserServiceImpl<|  while locating com.nashen.service.user.UserService<|    for parameter 0 at com.nashen.service.audit.AuditServiceImpl.setUserService(AuditServiceImpl.java:150)<|  at com.nashen.integration.GuiceServletConfig$1.configureServlets(GuiceServletConfig.java:65)<|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.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.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.InjectorImpl$3.get(InjectorImpl.java:737)<|?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.SingleMethodInjector.inject(SingleMethodInjector.java:83)<|?at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73)<|?at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)<|?at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73)<|?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)<|?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 com.nashen.integration.GuiceServletConfig.getInjector(GuiceServletConfig.java:45)<|?at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45)<|?at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)<|?at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:411)<|?at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)<|?at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:247)<|?at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238)<|?at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)<|?at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)<|?at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)<|?at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)<|?at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)<|?at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)<|?at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)<|?at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)<|?at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)<|?at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81)<|?at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)<|?at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)<|?at org.eclipse.jetty.server.Server.doStart(Server.java:277)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1265)<|?at java.security.AccessController.doPrivileged(Native Method)<|?at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1188)<|?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 org.eclipse.jetty.start.Main.invokeMain(Main.java:468)<|?at org.eclipse.jetty.start.Main.start(Main.java:616)<|?at org.eclipse.jetty.start.Main.main(Main.java:92)<|<|5) Error in custom provider, java.lang.NullPointerException<|  while locating com.google.inject.persist.jpa.JpaPersistService<|  while locating javax.persistence.EntityManager<|    for parameter 0 at com.nashen.dao.CredentialDao.<init>(CredentialDao.java:13)<|  while locating com.nashen.dao.CredentialDao<|    for parameter 0 at com.nashen.service.security.AuthenticationServiceImpl.<init>(AuthenticationServiceImpl.java:17)<|  while locating com.nashen.service.security.AuthenticationServiceImpl<|  while locating com.nashen.service.security.AuthenticationService<|    for parameter 1 at com.nashen.service.user.UserServiceImpl.<init>(UserServiceImpl.java:24)<|  while locating com.nashen.service.user.UserServiceImpl<|  while locating com.nashen.service.user.UserService<|    for parameter 0 at com.nashen.service.audit.AuditServiceImpl.setUserService(AuditServiceImpl.java:150)<|  at com.nashen.integration.GuiceServletConfig$1.configureServlets(GuiceServletConfig.java:65)<|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.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.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.InjectorImpl$3.get(InjectorImpl.java:737)<|?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.InjectorImpl$3.get(InjectorImpl.java:737)<|?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.SingleMethodInjector.inject(SingleMethodInjector.java:83)<|?at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73)<|?at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)<|?at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73)<|?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)<|?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 com.nashen.integration.GuiceServletConfig.getInjector(GuiceServletConfig.java:45)<|?at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45)<|?at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)<|?at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:411)<|?at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)<|?at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:247)<|?at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238)<|?at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)<|?at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)<|?at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)<|?at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)<|?at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)<|?at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)<|?at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)<|?at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)<|?at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)<|?at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81)<|?at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)<|?at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)<|?at org.eclipse.jetty.server.Server.doStart(Server.java:277)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1265)<|?at java.security.AccessController.doPrivileged(Native Method)<|?at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1188)<|?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 org.eclipse.jetty.start.Main.invokeMain(Main.java:468)<|?at org.eclipse.jetty.start.Main.start(Main.java:616)<|?at org.eclipse.jetty.start.Main.main(Main.java:92)<|<|6) Error in custom provider, java.lang.NullPointerException<|  while locating com.google.inject.persist.jpa.JpaPersistService<|  while locating javax.persistence.EntityManager<|    for parameter 0 at com.nashen.dao.SectorDao.<init>(SectorDao.java:15)<|  while locating com.nashen.dao.SectorDao<|    for parameter 0 at com.nashen.service.note.SectorServiceImpl.<init>(SectorServiceImpl.java:19)<|  while locating com.nashen.service.note.SectorServiceImpl<|  while locating com.nashen.service.note.SectorService<|    for parameter 0 at com.nashen.service.audit.AuditServiceImpl.setSectorService(AuditServiceImpl.java:159)<|  at com.nashen.integration.GuiceServletConfig$1.configureServlets(GuiceServletConfig.java:65)<|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.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.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.InjectorImpl$3.get(InjectorImpl.java:737)<|?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.SingleMethodInjector.inject(SingleMethodInjector.java:83)<|?at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75)<|?at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73)<|?at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)<|?at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73)<|?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)<|?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 com.nashen.integration.GuiceServletConfig.getInjector(GuiceServletConfig.java:45)<|?at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45)<|?at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:771)<|?at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:411)<|?at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:763)<|?at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:247)<|?at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1238)<|?at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)<|?at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39)<|?at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)<|?at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:494)<|?at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:141)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:145)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:56)<|?at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)<|?at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:540)<|?at org.eclipse.jetty.util.Scanner.scan(Scanner.java:403)<|?at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:337)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:121)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:555)<|?at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:230)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:81)<|?at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)<|?at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)<|?at org.eclipse.jetty.server.Server.doStart(Server.java:277)<|?at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)<|?at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1265)<|?at java.security.AccessController.doPrivileged(Native Method)<|?at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1188)<|?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 org.eclipse.jetty.start.Main.invokeMain(Main.java:468)<|?at org.eclipse.jetty.start.Main.start(Main.java:616)<|?at org.eclipse.jetty.start.Main.main(Main.java:92)<|<|6 errors
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)

Stuart McCulloch

unread,
Nov 16, 2012, 11:19:40 AM11/16/12
to google...@googlegroups.com
On 16 Nov 2012, at 15:48, Richard Mutezintare wrote:

Good point about separation of method interception and service implementation...

Another reason to separate them is the fact that you're using the manually new'd instance as the interceptor, but also have the implementation registered with an implicit @ImplementedBy binding. The implicit binding would create a separate instance whenever someone injected AuditService (assuming you didn't explicitly bind your new'd instance to AuditService). Not an issue here, but it could be in the future if someone decided to mark it this class as a @Singleton and wondered why they saw two instances being created - one via new and the other via Guice.

Tried field injection...didn't work, then tried method injection...didn't work either. Here is the exception I am getting: 

It looks as though the PersistService has not been started at the time the DAOs are being injected into the interceptor.

How are you starting the persist service - are you using an initializer class or the web PersistFilter?  http://code.google.com/p/google-guice/wiki/JPA

You could create a simple initializer, such as:

public class PersistServiceInitializer {
        @Inject PersistServiceInitializer(PersistService service) {
                service.start(); 
        
}

and then bind it as an eager singleton before the requestInjection line, which should ensure the PersistService is started before the interceptor is injected.

Richard Mutezintare

unread,
Nov 16, 2012, 11:25:42 AM11/16/12
to google...@googlegroups.com
here is my complete configuration : 
return Guice.createInjector(Stage.DEVELOPMENT,
new JerseyServletModule() {
@Override
protected void configureServlets() {
// AbstractMatcher<TypeLiteral<?>> matcher = new AbstractMatcher<TypeLiteral<?>>() {
// public boolean matches(TypeLiteral<?> type) {
// return (type.getRawType().equals(LogbookService.class));
// }
// };
//
// bindListener(matcher, new LogbookServiceListener());

bind(UserResource.class);
bind(NoteResource.class);
bind(AuditResource.class);
bind(SectorResource.class);
bind(PilotStatusResource.class);

AuditServiceImpl auditInterceptor = new AuditServiceImpl();
requestInjection(auditInterceptor);
bindInterceptor(Matchers.any(), Matchers.annotatedWith(AuditTrail.class), auditInterceptor);

AuthorizationService authorizationService = new AuthorizationService();
requestInjection(authorizationService);
bindInterceptor(Matchers.any(), Matchers.annotatedWith(RequiresRole.class), authorizationService);

EntityNotFoundInterptor entityNotfound = new EntityNotFoundInterptor();
bindInterceptor(Matchers.any(), Matchers.annotatedWith(NullEntity.class), entityNotfound);

filter("/rest/*").through(PersistFilter.class);

// init rest service
serve("/rest/*").with(GuiceContainer.class, params);
binder().bind(GuiceContainer.class).asEagerSingleton();

}

}, new JpaPersistModule("logbook-persistence"));



the JpaPersistModule is instantiated after the requestInjection call...I am looking at ways to use some kind of deferred binding...perhaps using a Provider<T>...Not sure if that would solve my issue though...Any recommendations?


Stuart McCulloch

unread,
Nov 16, 2012, 11:43:56 AM11/16/12
to google...@googlegroups.com
Yes, injecting a Provider for the DAO into the interceptor will help defer use of the PersistService until you actually need it.

Richard Mutezintare

unread,
Nov 16, 2012, 11:52:55 AM11/16/12
to google...@googlegroups.com
There is still a problem: how do I construct the DAO object in the provider? It has a guice managed dependencie (the EntityManager)? What is the simplest or elegant way of doing it?

Stuart McCulloch

unread,
Nov 16, 2012, 11:59:21 AM11/16/12
to google...@googlegroups.com
On 16 Nov 2012, at 16:52, Richard Mutezintare wrote:

There is still a problem: how do I construct the DAO object in the provider? It has a guice managed dependencie (the EntityManager)? What is the simplest or elegant way of doing it?

Just change:

   @Inject AuditDao auditDao;

into:

   @Inject Provider<AuditDao> auditDaoProvider;

and then use auditDaoProvider.get() to get the DAO.

Richard Mutezintare

unread,
Nov 16, 2012, 12:12:59 PM11/16/12
to google...@googlegroups.com
ok so now I have: 

public class AuditDaoProvider implements Provider<AuditDao> {

AuditDao _auditDao;
@Inject
public AuditDaoProvider(AuditDao auditDao) {
_auditDao = auditDao;
}
@Override
public AuditDao get() {
return _auditDao;
}

and in the method interceptor I have: 
@Inject private Provider<AuditDao> _auditDaoProvider; 
public AuditServiceImpl(Provider<AuditDao> auditDaoProvider) {
_auditDaoProvider = auditDaoProvider;
}

... and when I need the DAO, I do: _auditDaoProvider.get().persist(audit);

it seems a binding of the provider is missing in the servletModule config...or it is not necessary to explicitly bind the provider?

Richard Mutezintare

unread,
Nov 16, 2012, 12:18:03 PM11/16/12
to google...@googlegroups.com
seems no explicit binding of the provider is necessary....works like a charm not...Thanks Stuart!

Stuart McCulloch

unread,
Nov 16, 2012, 12:22:52 PM11/16/12
to google...@googlegroups.com
On 16 Nov 2012, at 17:12, Richard Mutezintare wrote:

ok so now I have: 

public class AuditDaoProvider implements Provider<AuditDao> {

AuditDao _auditDao;
@Inject
public AuditDaoProvider(AuditDao auditDao) {
_auditDao = auditDao;
}
@Override
public AuditDao get() {
return _auditDao;
}

^ Remove the AuditDaoProvider class completely, you don't need it.

If Foo exists as a binding then you can @Inject Provider<Foo> without any change because Provider<T> is a built-in binding:


Also the AuditDaoProvider class won't work because you're injecting AuditDao into the constructor, which means it's not lazily loaded (and it also introduces a cycle).

and in the method interceptor I have: 
@Inject private Provider<AuditDao> _auditDaoProvider; 
public AuditServiceImpl(Provider<AuditDao> auditDaoProvider) {
_auditDaoProvider = auditDaoProvider;
}

... and when I need the DAO, I do: _auditDaoProvider.get().persist(audit);

it seems a binding of the provider is missing in the servletModule config...or it is not necessary to explicitly bind the provider?

If you use the built-in Provider<AuditDao> binding to lazy load AuditDao then you don't need to explicitly bind a provider.

Richard Mutezintare

unread,
Nov 16, 2012, 12:30:00 PM11/16/12
to google...@googlegroups.com
it works as described above...DAO instance is not null.
Reply all
Reply to author
Forward
0 new messages