我想知道我是否弄乱了我的所有代码,或者我的解决方案是否可以接受:我有一个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
谢谢你格拉西亚斯|古拉爵
答案 0 :(得分:0)
关键是,是否存在任何关于“实施所有可能的观点”的文件
ejb-3.1 specification提供了有关此主题的一些指导。
第3章会话Bean的客户端视图
... 会话bean的客户端可以是本地客户端,远程客户端或Web服务客户端,具体取决于 哪些这些视图由bean提供并由客户端使用。
虽然可以为会话bean提供多个客户端视图,但通常只有一个 提供。强> ...