【发布时间】:2013-11-15 11:20:52
【问题描述】:
我正在使用 Glassfish 4。我有一个 EAR,它有一个 WAR 和一个 JAR(带有 EJB)。
我想从我的 WAR 中调用 EJB,但我不确定是否需要使用本地或远程接口。
在我的 JAR 中,我的 Bean 看起来像这样:
@Stateless
public class Test implements TestLocal {
@Override
public void testing() {
}
}
还有我的本地人:
@Local
public interface TestLocal {
void testing();
}
在我的 WAR 中我有一个 Web 服务,它看起来像这样:
@WebService(serviceName = "TestWS")
public class TestWS {
private @EJB TestLocal testBean;
@WebMethod(operationName = "test")
public String test() {
testBean.test();
}
}
这两个都被打包到一个EAR中。
当我调用我的 WebService 方法时,我得到一个 AccessLocalException :
警告:javax.ejb.AccessLocalException:客户端未授权 这个调用在 com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1895) 在 com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:210)
首先:
- 这是调用 EJB 的正确方法吗? EAR 中的 WAR 可以使用包含的 JAR 中的本地接口吗?
- 如果是这样,那么有人知道我做错了什么吗?我需要设置某种安全配置吗?
【问题讨论】:
-
您的 EJB 是否有任何安全配置设置?
标签: java jakarta-ee glassfish ejb ejb-3.0