假设我们使用的是EJB3,会话bean使用/实现本地接口L和远程接口R。
@Local
public interface L {
abstract void localMethod();
}
@Remote
public interface R {
abstract void remoteMethod();
}
我的问题1:
本地客户端也可以使用remoteMethod吗?
我的问题2:
用远程接口扩展本地接口是一种好的做法吗?
@Local
public interface L extends R {
...
}
-
你说的"本地客户"是什么意思还不清楚。如果在同一进程中有一个客户端,那么它可以同时使用L和R,但必须分别查找/注入它们:不能查找L、强制转换为R和调用remoteMethod。
-
我不认为这是一种"好"的做法。远程接口上的方法的参数和返回值将按值传递,但本地接口上的参数和方法的返回值将通过引用传递。也就是说,如果您的EJB及其客户端知道这一警告,那么在可能的情况下,您可以通过使用本地接口来获得更好的性能。