NullPointerException, когда я пытаюсь внедрить SessionContextImpl в wildfly 9.0.2
Я перемещаю приложение jboss 5.1.0 GA в Wildfly 9.0.2, в котором я управляю EJB, в bean-компоненте без состояния EJBContext был введен таким образом в jboss 5, и он работает:
import javax.ejb.EJBContext;
@Stateless
@SecurityDomain (SystemSetting.SECURITY_DOMAIN)
@PermitAll
public class SystemServiceBean implements SystemServiceLocal {
@Resource
EjbContext ctx;
Затем он был использован в этом методе
private Principal getCallerPrincipal () {
try {
return SecurityUtil.getCallerPrincipal (ctx, (Subject) PolicyContext.getContext ("javax.security.auth.Subject.container"));
PolicyContext.getContext ("javax.security.auth.Subject.container"));
} catch (PolicyContextException e) {
e.printStackTrace ();
}
return ctx.getCallerPrincipal ();
}
позже основной пытался вернуть этим методом
public class SecurityUtil {
public static Principal getCallerPrincipal (EJBContext ctx, Subject subject) {
try {
if (subject! = null) {
Set <Group> subjectGroups = subject.getPrincipals (Group.class);
Iterator <Group> iter = subjectGroups.iterator ();
while (iter.hasNext ()) {
Group group = iter.next ();
String name = group.getName ();
if (name.equals ("CallerPrincipal")) {
Enumeration <? extends Home> members = group.members ();
if (members.hasMoreElements ()) {
Main principal = (Main) members.nextElement ();
return principal;
}
}
}
}
} catch (Exception e) {
System.out.println ("============================= catch:");
Logger.getLogger (SecurityUtil.class.getName ()). Error (e);
}
return ctx.getCallerPrincipal ();
}
но теперь в wildfly выдает следующую ошибку:
**Caused by: javax.ejb.EJBException: java.lang.IllegalArgumentException: Can not set javax.ejb.EJBContext field net.ps.ais.system.ejb.SystemServiceBean.ctx to org.jboss.as.ejb3.context.SessionContextImpl
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx (CMTTxInterceptor.java:187)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx (CMTTxInterceptor.java:277)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew (CMTTxInterceptor.java:344)
at org.jboss.as.ejb3.tx.LifecycleCMTTxInterceptor.processInvocation (LifecycleCMTTxInterceptor.java:66)
at org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java:340)
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation (CurrentInvocationContextInterceptor.java:41)
at org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java:340)
at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation (ConcurrentContextInterceptor.java:45)
at org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java:340)
at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation (ContextClassLoaderInterceptor.java:64)
at org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java:340)
at org.jboss.invocation.InterceptorContext.run (InterceptorContext.java:356)
at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation (PrivilegedWithCombinerInterceptor.java:80)
at org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java:340)
at org.jboss.invocation.ChainedInterceptor.processInvocation (ChainedInterceptor.java:61)
at org.jboss.as.ee.component.BasicComponent.constructComponentInstance (BasicComponent.java:161)**
если я изменил способ ввести его:
import org.jboss.as.ejb3.context.SessionContextImpl;
@Resource
SessionContextImpl ctx;
броски:
**Caused by: java.lang.NullPointerException
at net.ps.ais.system.ejb.SystemServiceBean.helloWorld(SystemServiceBean.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:254)**
кто-нибудь может мне помочь?