The deployment is a collapsed EAR. If it’s a scanning issue, it wasn’t one before the upgrade.
I’ve not needed @Interceptor before. The javadoc says it’s not needed “This annotation is optional if the Interceptors <http://docs.oracle.com/javaee/6/api/javax/interceptor/Interceptors.html> annotation ... used to associate the interceptor with the target class.” (http://docs.oracle.com/javaee/6/api/javax/interceptor/Interceptor.html <http://docs.oracle.com/javaee/6/api/javax/interceptor/Interceptor.html>). I’ve just tried it anyway and the result is the same. Surely the key to this problem has to be in the following message? WARN [LogStreamAsync.Thread] (Log4jLogStream.java:59) - Injection data not found in JNDI context: jndiName='comp/env/com.goxpro.xpro.business.domain.base.BaseService/context', target=com.goxpro.xpro.business.domain.base.BaseService/context > On 24 May 2017, at 6:57 PM, Romain Manni-Bucau <[email protected]> wrote: > > How is the deployment/packaging? Can it be a scanning issue? You dont add > @Interceptor on the interceptor? > > > Le 24 mai 2017 11:28, "JumpStart" <[email protected]> a > écrit : > >> I’m upgrading from 4.5.2 to 7.0.3. Since the upgrade, I have an >> interceptor that fails and consequently session beans can’t be invoked. I >> found the same error when I tried to upgrade to 4.6.0.2. Was there a JNDI >> change between 4.5.2 and 4.6.0.2? >> >> >> WARN [LogStreamAsync.Thread] (Log4jLogStream.java:59) - Injection data >> not found in JNDI context: jndiName='comp/env/com.goxpro. >> xpro.business.domain.base.BaseService/context', target=com.goxpro.xpro. >> business.domain.base.BaseService/context >> WARN [LogStreamAsync.Thread] (Log4jLogStream.java:59) - Injection data >> not found in JNDI context: jndiName='comp/env/com.goxpro. >> xpro.business.domain.base.UsernameCacheRefresher/context', >> target=com.goxpro.xpro.business.domain.base.UsernameCacheRefresher/context >> WARN [LogStreamAsync.Thread] (Log4jLogStream.java:59) - Injection data >> not found in JNDI context: jndiName='comp/env/com.goxpro. >> xpro.business.domain.base.UsernameCacheRefresher/context', >> target=com.goxpro.xpro.business.domain.base.UsernameCacheRefresher/context >> WARN [LogStreamAsync.Thread] (Log4jLogStream.java:59) - Injection data >> not found in JNDI context: jndiName='comp/env/com.goxpro. >> xpro.business.domain.base.UsernameCacheRefresher/context', >> target=com.goxpro.xpro.business.domain.base.UsernameCacheRefresher/context >> ERROR [LogStreamAsync.Thread] (Log4jLogStream.java:51) - >> EjbTransactionUtil.handleSystemException: null >> java.lang.NullPointerException >> at com.goxpro.xpro.business.domain.base.UsernameCacheRefresher. >> refreshUsernameCache(UsernameCacheRefresher.java:38) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at sun.reflect.NativeMethodAccessorImpl.invoke( >> NativeMethodAccessorImpl.java:62) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke( >> DelegatingMethodAccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:497) >> at org.apache.openejb.core.interceptor. >> ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext. >> java:205) >> at org.apache.openejb.core.interceptor. >> ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186) >> at org.apache.openejb.monitoring.StatsInterceptor.record( >> StatsInterceptor.java:181) >> at org.apache.openejb.monitoring.StatsInterceptor.invoke( >> StatsInterceptor.java:100) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at sun.reflect.NativeMethodAccessorImpl.invoke( >> NativeMethodAccessorImpl.java:62) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke( >> DelegatingMethodAccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:497) >> at org.apache.openejb.core.interceptor. >> ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext. >> java:205) >> at org.apache.openejb.core.interceptor. >> ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186) >> at org.apache.openejb.core.interceptor.InterceptorStack. >> invoke(InterceptorStack.java:85) >> at org.apache.openejb.core.stateless.StatelessContainer._ >> invoke(StatelessContainer.java:252) >> at org.apache.openejb.core.stateless.StatelessContainer. >> invoke(StatelessContainer.java:212) >> at org.apache.openejb.core.ivm.EjbObjectProxyHandler. >> synchronizedBusinessMethod(EjbObjectProxyHandler.java:265) >> at org.apache.openejb.core.ivm.EjbObjectProxyHandler. >> businessMethod(EjbObjectProxyHandler.java:260) >> at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke( >> EjbObjectProxyHandler.java:89) >> at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke( >> BaseEjbProxyHandler.java:347) >> at com.sun.proxy.$Proxy206.passivateEligibleClients(Unknown >> Source) >> at com.goxpro.xpro.web.daemons.InactiveClientsManagerTask.doNext( >> InactiveClientsManagerTask.java:65) >> at com.goxpro.xpro.web.daemons.AbstractTaskRunner.run( >> AbstractTaskRunner.java:124) >> at java.util.TimerThread.mainLoop(Timer.java:555) >> at java.util.TimerThread.run(Timer.java:505) >> >> >> The NPE line is indicated in this source... >> >> >> public class UsernameCacheRefresher { >> >> @Resource >> private javax.ejb.SessionContext context; >> >> private static final Logger logger = LoggerFactory.getLogger( >> BaseService.class); >> >> @AroundInvoke >> public Object refreshUsernameCache(InvocationContext ic) throws >> Exception { >> >> Principal callerPrincipal = context.getCallerPrincipal(); >> <<< Line 38. NPE happens here. >> >> if (callerPrincipal != null) { >> UsernameCache.setThreadUsername( >> callerPrincipal.getName()); >> } >> else { >> // Is this even possible? Isn't there a default >> principal of guest (OpenEJB) or anonymous (JBoss)? >> logger.error("WATCH OUT - UsernameCacheRefresher >> found callerPrincipal is null!!!!!!!!!!!!!"); >> UsernameCache.setThreadUsername(null); >> } >> >> return ic.proceed(); >> } >> >> } >> >> >> Here’s an example of how it gets used… >> >> >> @Stateless >> @Local(IEmailManagerServiceLocal.class) >> @Remote(IEmailManagerServiceRemote.class) >> @Interceptors({ UsernameCacheRefresher.class }) >> public class EmailManagerService extends BaseService implements >> IEmailManagerServiceLocal, IEmailManagerServiceRemote { >> … >> } >> >> >> Thanks in advance, >> >> Geoff
