Payara 中 ProgrammaticLogin 和远程 EJB 的问题

问题描述

我在 Payara 5 服务器上有一个无状态 EJB:

@Stateless
@RolesAllowed(value="admin")
public class EmployeesRemoteEJB  {
... 
}

在来自服务器的文件领域中,我已使用组列表“admin”配置了一个用户

我正在尝试从使用 ProgrammaticLogin 和 security-ee.jar 库的客户端访问它:

pl = new ProgrammaticLogin();          
pl.login("user","pwd");
ctx = new InitialContext();
return ctx.lookup(remoteClass.getName());

这是抛出的异常:

javax.naming.NamingException: Lookup Failed for 'XXX' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory,java.naming.factory.url.pkgs=com.sun.enterprise.naming,java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNdistateFactoryImpl} [Root exception is javax.naming.NamingException: ejb ref resolution error for remote business interface XXX [Root exception is java.rmi.AccessException: CORBA NO_PERMISSION 0 No; nested exception is: 
    org.omg.CORBA.NO_PERMISSION: ----------BEGIN server-side stack trace----------
org.omg.CORBA.NO_PERMISSION:   vmcid: 0x0  minor code: 0  completed: No
    at com.sun.enterprise.iiop.security.SecServerRequestInterceptor.handle_null_service_context(SecServerRequestInterceptor.java:459)
    at com.sun.enterprise.iiop.security.SecServerRequestInterceptor.receive_request(SecServerRequestInterceptor.java:478)
    at com.sun.corba.ee.impl.interceptors.InterceptorInvoker.invokeServerInterceptorIntermediatePoint(InterceptorInvoker.java:612)
    at com.sun.corba.ee.impl.interceptors.PIHandlerImpl.invokeServerPIIntermediatePoint(PIHandlerImpl.java:614)
    at com.sun.corba.ee.impl.protocol.ServerRequestdispatcherImpl.getServantWithPI(ServerRequestdispatcherImpl.java:333)
    at com.sun.corba.ee.impl.protocol.ServerRequestdispatcherImpl.dispatch(ServerRequestdispatcherImpl.java:196)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequestRequest(MessageMediatorImpl.java:1565)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:1441)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleInput(MessageMediatorImpl.java:946)
    at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:213)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:710)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.dispatch(MessageMediatorImpl.java:509)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.doWork(MessageMediatorImpl.java:2238)
    at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$TaskRunner.run(ThreadPoolImpl.java:189)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
----------END server-side stack trace----------  vmcid: 0x0  minor code: 0  completed: No]]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:496)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)

问题是,我使用 Glassfish 并且一切正常,但后来我切换到 Payara Server,它停止工作。不知道有没有遗漏。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)