java为什么在EJB类上同时使用@LocalBean和接口?
正如我所理解的,当人们不想为EJB定义任何接口时,会在EJB上使用@Localbean。然后我看到许多网站,包括IBM1,都显示了这样的内容:
@Stateless
@Local(LocalA.class)
@Remote(RemoteA.class)
@LocalBean
public class MeineEJB {
public void localA() {}
public void remoteA() {}}
如果它是一个没有接口的EJB,那么@Local(LocalA.class)在这段代码中有什么用处?(我假设它是一个接口。) 而且,我不能同时理解@LocaBean和@Remote@LocalBean说它是一个本地bean,但我们也将它定义为一个远程bean。那么为什么注释标题首先是@LocalBean呢
谢谢大家阅读
# 1 楼答案
你只是对为什么@Local&;感到困惑@LocalBean在同一个MeinjeEJB类上进行注释。并没有具体说明他们之间的差异
no接口(@LocalBean)只不过是本地视图的一个变体,它在本地公开bean类的所有公共业务方法,而不使用单独的业务接口
在EJB中,可以将接口公开为本地(即客户端运行在同一个JVM-Servlet、JSF、另一个EJB)接口、远程(即客户端是RMI、其他形式的RPC等)接口或无接口视图(实现无接口)。即:
如果bean公开至少一个接口(本地或远程),它将自动丢失无接口视图。所以我们 需要显式指定它通过在bean上使用@LocalBean注释来公开无接口视图
注意:不要混淆@Local&@MeinjeEJB类上的LocalBean。我们需要@LocalBean,因为MeineEJB将由客户端(JSF、Servet等)本地调用(即不能远程调用)。远程调用的是RemoteA。由MeineEJB自己来上课