我正在使用Glassfish 4.並且我有一個具有WAR和JAR(帶有EJB)的EAR。從同一個EAR中的WAR中調用EJB
我想從我的抗戰調用EJB的,但我真的不知道,如果我需要使用本地或遠程接口。
在我的JAR,我的豆看起來是這樣的:
@Stateless
public class Test implements TestLocal {
@Override
public void testing() {
}
}
我的地方:
@Local
public interface TestLocal {
void testing();
}
裏面我的抗戰我有一個Web服務,它看起來像這樣:
@WebService(serviceName = "TestWS")
public class TestWS {
private @EJB TestLocal testBean;
@WebMethod(operationName = "test")
public String test() {
testBean.test();
}
}
這兩個被打包成一個EAR。
當我打電話給我的WebService方法,我得到一個AccessLocalException:
Warnung: javax.ejb.AccessLocalException: Client not authorized for this invocation at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1895) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:210)
首先:
- 這是正確的方式來調用EJB。 EAR中的WAR可以使用包含的JAR中的本地接口嗎?
- 如果是這樣,那麼有人知道我在做什麼錯了嗎?我是否需要設置某種安全配置?
您是否有任何針對您的EJB的安全配置設置? – JamesB