EJB:@remote,@ local和@localbean,揭露所有这些是正确的吗?

时间:2014-09-30 23:19:15

标签: java-ee interface ejb

我想知道我是否弄乱了我的所有代码,或者我的解决方案是否可以接受:我有一个EJB,让我们称之为客户。客户由其他EJB,主要页面(在同一个JVM中)和servlet(可能在同一个JVM中,可能不是)使用。 所以我对此进行了编码:

// this is in RemoteIntefaces.jar
@Remote
public interface CustomerRemote {
  public methodA();
}

// this is in LocalInterfaces.jar
@Local
public interface CustomerLocal {
  public methodB();
}

// this is in the EJB project
@Stateless
@LocalBean
public class Customer implements CustomerRemote, CustomerLocal {
  @Override
  public methodA() {
    [...]
  }
  @Override
  public methodB() {
    [...]
  }
  public methodC() {
    [...}
  }
}

使用RemoteInterfaces.jar:

从servlet远程调用methodA
@EJB
private CustomerRemote customer;
[...]
public myFunction() {
  customer.methodA();
}

使用LocalInterfaces.jar:

从primefaces烘焙bean调用methodB
@EJB
private CustomerLocal customer;
[...]
public myFunction() {
  customer.methodB();
}

methodC由同一EJB项目中的另一个EJB使用:

@EJB
private Customer customer;
[...]
public myFunction() {
  customer.methodC();
}

我不希望methodC暴露给外部接口,所以我决定不把它放在任何接口中

工作正常,但我不知道它是否正确,或者它是不良做法还是有负面影响。 它不是关于"我认为它很好",我已经有了意见,关键是如果存在任何关于"实现所有可能的观点的文档" :P

谢谢你格拉西亚斯|古拉爵

1 个答案:

答案 0 :(得分:0)

  

关键是,是否存在任何关于“实施所有可能的观点”的文件

ejb-3.1 specification提供了有关此主题的一些指导。

  

第3章会话Bean的客户端视图

     

...   会话bean的客户端可以是本地客户端,远程客户端或Web服务客户端,具体取决于   哪些这些视图由bean提供并由客户端使用。

     

虽然可以为会话bean提供多个客户端视图,但通常只有一个   提供。 ...