jakarta-ee - 通过远程和本地接口访问 EJB
问题描述
在我们的 JEE 应用程序中,我们有一个基础服务。这个服务应该有一个接口。
public interface BasisServiceA
该服务的实现是一个bean。
@Remote(BasisServiceA.class)
@LocalBean
public class BasisServiceAImpl implements BasisServiceA {
...
}
通过使用远程接口,该服务将被称为远程服务,例如通过 JMS 。
现在我们喜欢在我们的应用程序内部使用相同的服务,通过使用相同的接口。
问题:
- 我们如何使用接口从应用程序访问服务?
注意事项:
- 我们不想直接使用 BasisServiceAImpl 类。
- @LocalBean 不允许使用限定符,但 @Local 允许
- 使用与 qualifiery 相同的接口会使 DI 感到困惑?
- 第二个接口(例如 @Local(BasisServiceALocal) )是唯一的解决方案吗?
解决方案
您正在尝试解决一个不存在的问题。只需在您的应用程序中注入远程接口并将其留给应用程序服务器来确定您正在从相同的应用程序上下文调用 bean 并进行优化(即没有参数/返回值的序列化/反序列化)。相信我,实现应用程序服务器的人并不愚蠢,他们花了很多时间思考如何优化他们的服务器。这个几乎是免费赠品。