有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    你只是对为什么@Local&;感到困惑@LocalBean在同一个MeinjeEJB类上进行注释。并没有具体说明他们之间的差异

    no接口(@LocalBean)只不过是本地视图的一个变体,它在本地公开bean类的所有公共业务方法,而不使用单独的业务接口

    在EJB中,可以将接口公开为本地(即客户端运行在同一个JVM-Servlet、JSF、另一个EJB)接口、远程(即客户端是RMI、其他形式的RPC等)接口或无接口视图(实现无接口)。即:

    @Stateless 
    @Local(LocalA.class) @Remote(RemoteA.class) 
    @LocalBean 
    public class MeineEJB { 
    public void localA() {}
     public void remoteA() {}}
    

    如果bean公开至少一个接口(本地或远程),它将自动丢失无接口视图。所以我们 需要显式指定它通过在bean上使用@LocalBean注释来公开无接口视图

    注意:不要混淆@Local&@MeinjeEJB类上的LocalBean。我们需要@LocalBean,因为MeineEJB将由客户端(JSF、Servet等)本地调用(即不能远程调用)。远程调用的是RemoteA。由MeineEJB自己来上课