Note that there are some explanatory texts on larger screens.

plurals
  1. POGuice & EJB injection (interceptor?)
    primarykey
    data
    text
    <p>I have been debugging for many, many hours but I can't understand why the code is not working. Two service classes, annotated in the same way, show a different interceptor behaviour.</p> <p>Stack trace #1:</p> <pre><code>Daemon Thread [http-thread-pool-8080(1)] (Suspended (breakpoint at line 120 in UserService)) UserService.saveUserOnLogin(UserBE) line: 120 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43 Method.invoke(Object, Object...) line: 601 EJBSecurityManager.runMethod(Method, Object, Object[]) line: 1052 EJBSecurityManager.invoke(Method, boolean, Object, Object[]) line: 1124 StatelessSessionContainer(BaseContainer).invokeBeanMethod(EjbInvocation) line: 5388 EjbInvocation.invokeBeanMethod() line: 619 AroundInvokeChainImpl.invokeNext(int, InterceptorManager$AroundInvokeContext) line: 800 EjbInvocation.proceed() line: 571 _GuiceInterceptor_Serializable(GuiceInterceptor).injectByGuice(InvocationContext) line: 24 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43 Method.invoke(Object, Object...) line: 601 AroundInvokeInterceptor.intercept(InterceptorManager$AroundInvokeContext) line: 861 AroundInvokeChainImpl.invokeNext(int, InterceptorManager$AroundInvokeContext) line: 800 EjbInvocation.proceed() line: 571 _SystemInterceptorProxy_Serializable(SystemInterceptorProxy).doAround(InvocationContext, Method) line: 162 _SystemInterceptorProxy_Serializable(SystemInterceptorProxy).aroundInvoke(InvocationContext) line: 144 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43 Method.invoke(Object, Object...) line: 601 AroundInvokeInterceptor.intercept(InterceptorManager$AroundInvokeContext) line: 861 AroundInvokeChainImpl.invokeNext(int, InterceptorManager$AroundInvokeContext) line: 800 InterceptorManager.intercept(InterceptorManager$InterceptorChain, InterceptorManager$AroundInvokeContext) line: 370 StatelessSessionContainer(BaseContainer).__intercept(EjbInvocation) line: 5360 StatelessSessionContainer(BaseContainer).intercept(EjbInvocation) line: 5348 EJBLocalObjectInvocationHandler.invoke(Class, Method, Object[]) line: 214 EJBLocalObjectInvocationHandlerDelegate.invoke(Object, Method, Object[]) line: 88 $Proxy209.saveUserOnLogin(UserBE) line: not available __EJB31_Generated__UserService__Intf____Bean__.saveUserOnLogin(UserBE) line: not available LoginUserHandler.saveUser(UserDTO) line: 165 LoginUserHandler.loginUser(UserDTO) line: 123 LoginUserHandler.loginWithOAuth(String, String, String, String) line: 158 LoginUserHandler.execute(LoginUser, ExecutionContext) line: 103 LoginUserHandler.execute(Action, ExecutionContext) line: 1 GuiceDispatch(AbstractDispatch).doExecute(A, ExecutionContext) line: 81 GuiceDispatch(AbstractDispatch).execute(A) line: 68 HupaDispatchServlet(AbstractSecureDispatchServlet).execute(String, Action&lt;?&gt;) line: 29 HupaDispatchServlet.execute(String, Action&lt;?&gt;) line: 56 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43 Method.invoke(Object, Object...) line: 601 RPC.invokeAndEncodeResponse(Object, Method, Object[], SerializationPolicy, int) line: 569 HupaDispatchServlet(RemoteServiceServlet).processCall(String) line: 208 HupaDispatchServlet(RemoteServiceServlet).processPost(HttpServletRequest, HttpServletResponse) line: 248 HupaDispatchServlet(AbstractRemoteServiceServlet).doPost(HttpServletRequest, HttpServletResponse) line: 62 HupaDispatchServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 688 HupaDispatchServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 770 ServletDefinition.doService(ServletRequest, ServletResponse) line: 263 ServletDefinition.service(ServletRequest, ServletResponse) line: 178 ManagedServletPipeline.service(ServletRequest, ServletResponse) line: 91 FilterChainInvocation.doFilter(ServletRequest, ServletResponse) line: 62 ManagedFilterPipeline.dispatch(ServletRequest, ServletResponse, FilterChain) line: 118 GuiceFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 113 ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 256 ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 217 StandardWrapperValve.invoke(Request, Response) line: 279 StandardContextValve.invoke(Request, Response) line: 175 StandardPipeline.doInvoke(Request, Response, boolean) line: 655 StandardPipeline.invoke(Request, Response) line: 595 StandardHostValve.invoke(Request, Response) line: 161 CoyoteAdapter.doService(Request, Request, Response, Response) line: 331 CoyoteAdapter.service(Request, Response) line: 231 ContainerMapper$AdapterCallable.call() line: 317 ContainerMapper.service(Request, Response) line: 195 ProcessorTask.invokeAdapter() line: 849 ProcessorTask.doProcess() line: 746 ProcessorTask.process(InputStream, OutputStream) line: 1045 DefaultProtocolFilter.execute(Context) line: 228 HttpProtocolChain(DefaultProtocolChain).executeProtocolFilter(Context, int) line: 137 HttpProtocolChain(DefaultProtocolChain).execute(Context, int) line: 104 HttpProtocolChain(DefaultProtocolChain).execute(Context) line: 90 HttpProtocolChain.execute(Context) line: 79 ProtocolChainContextTask.doCall() line: 54 ProtocolChainContextTask(SelectionKeyContextTask).call() line: 59 ProtocolChainContextTask(ContextTask).run() line: 71 FixedThreadPool$BasicWorker(AbstractThreadPool$Worker).doWork() line: 532 FixedThreadPool$BasicWorker(AbstractThreadPool$Worker).run() line: 513 HttpWorkerThread(Thread).run() line: 722 </code></pre> <p>Stack trace #2</p> <pre><code>Daemon Thread [http-thread-pool-8080(2)] (Suspended (entry into method synchronizeHeaders in MessageService)) __EJB31_Generated__MessageService__Intf____Bean__(MessageService).synchronizeHeaders(String) line: 93 FetchMessagesHandler.executeInternal(FetchMessages, ExecutionContext) line: 80 FetchMessagesHandler.executeInternal(Action, ExecutionContext) line: 1 FetchMessagesHandler(AbstractSessionHandler&lt;A,R&gt;).executeWithRetries(A, ExecutionContext, int) line: 127 FetchMessagesHandler(AbstractSessionHandler&lt;A,R&gt;).execute(A, ExecutionContext) line: 97 GuiceDispatch(AbstractDispatch).doExecute(A, ExecutionContext) line: 81 GuiceDispatch(AbstractDispatch).execute(A) line: 68 HupaDispatchServlet(AbstractSecureDispatchServlet).execute(String, Action&lt;?&gt;) line: 29 HupaDispatchServlet.execute(String, Action&lt;?&gt;) line: 56 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43 Method.invoke(Object, Object...) line: 601 RPC.invokeAndEncodeResponse(Object, Method, Object[], SerializationPolicy, int) line: 569 HupaDispatchServlet(RemoteServiceServlet).processCall(String) line: 208 HupaDispatchServlet(RemoteServiceServlet).processPost(HttpServletRequest, HttpServletResponse) line: 248 HupaDispatchServlet(AbstractRemoteServiceServlet).doPost(HttpServletRequest, HttpServletResponse) line: 62 HupaDispatchServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 688 HupaDispatchServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 770 ServletDefinition.doService(ServletRequest, ServletResponse) line: 263 ServletDefinition.service(ServletRequest, ServletResponse) line: 178 ManagedServletPipeline.service(ServletRequest, ServletResponse) line: 91 FilterChainInvocation.doFilter(ServletRequest, ServletResponse) line: 62 ManagedFilterPipeline.dispatch(ServletRequest, ServletResponse, FilterChain) line: 118 GuiceFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 113 ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 256 ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 217 StandardWrapperValve.invoke(Request, Response) line: 279 StandardContextValve.invoke(Request, Response) line: 175 StandardPipeline.doInvoke(Request, Response, boolean) line: 655 StandardPipeline.invoke(Request, Response) line: 595 StandardHostValve.invoke(Request, Response) line: 161 CoyoteAdapter.doService(Request, Request, Response, Response) line: 331 CoyoteAdapter.service(Request, Response) line: 231 ContainerMapper$AdapterCallable.call() line: 317 ContainerMapper.service(Request, Response) line: 195 ProcessorTask.invokeAdapter() line: 849 ProcessorTask.doProcess() line: 746 ProcessorTask.process(InputStream, OutputStream) line: 1045 DefaultProtocolFilter.execute(Context) line: 228 HttpProtocolChain(DefaultProtocolChain).executeProtocolFilter(Context, int) line: 137 HttpProtocolChain(DefaultProtocolChain).execute(Context, int) line: 104 HttpProtocolChain(DefaultProtocolChain).execute(Context) line: 90 HttpProtocolChain.execute(Context) line: 79 ProtocolChainContextTask.doCall() line: 54 ProtocolChainContextTask(SelectionKeyContextTask).call() line: 59 ProtocolChainContextTask(ContextTask).run() line: 71 FixedThreadPool$BasicWorker(AbstractThreadPool$Worker).doWork() line: 532 FixedThreadPool$BasicWorker(AbstractThreadPool$Worker).run() line: 513 HttpWorkerThread(Thread).run() line: 722 </code></pre> <p>It seems as if the interceptor is not invoked for the message service class. However, it does work for the user service class. Why could this be?</p> <p>The message service class:</p> <pre><code>@Stateless @Interceptors(GuiceInterceptor.class) public class MessageService { /** * The gmail folder default. */ private static final String GMAIL_ALL_MAIL = "[Gmail]/All Mail"; /** * The IMAP store cache. */ @Inject private IMAPStoreCache imapStoreCache; /** * The EJB resolver. */ @Inject private EJBResolver ejbResolver; </code></pre> <p>The user service class:</p> <pre><code>@Stateless @Interceptors(GuiceInterceptor.class) public class UserService { /** * The entity manager. */ @PersistenceContext(unitName = "hupa") private EntityManager em; /** * The session provider. */ @Inject private Provider&lt;HttpSession&gt; sessionProvider; </code></pre> <p>And finally the interceptor:</p> <pre><code>public class GuiceInterceptor { @EJB private GuiceInjectorHolder injectorHolder; @AroundInvoke @AroundTimeout public Object injectByGuice(InvocationContext invocationContext) throws Exception { Injector injector = injectorHolder.getInjector(); injector.injectMembers(invocationContext.getTarget()); return invocationContext.proceed(); } } </code></pre> <p>Hope there are experts on this, I am frustrated ;)</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload