通过接口通过远程和本地访问 EJB
Access to EJB over Remote and local by interface
在我们的 JEE 应用程序中,我们有一个基础服务。这个服务应该有一个接口。
public interface BasisServiceA
这个服务的实现是一个bean。
@Remote(BasisServiceA.class)
@LocalBean
public class BasisServiceAImpl implements BasisServiceA {
...
}
此服务将被称为远程服务,例如通过 JMS,通过使用 远程 接口。
现在我们想在我们的应用程序内部使用相同的服务,通过使用 相同的接口。
问题:
- 我们如何使用接口从应用程序访问服务?
注意事项:
- 我们不想直接使用 class BasisServiceAImpl。
- @LocalBean 不允许限定符,但@Local 允许
- 使用与限定符相同的界面会使 DI 混淆?
- 第二个接口(例如 @Local(BasisServiceALocal) )是唯一的解决方案吗?
您正在尝试解决一个不存在的问题。只需在您的应用程序中注入远程接口,然后将其留给应用程序服务器来确定您是从相同的应用程序上下文调用 bean 并进行优化(即没有参数的序列化/反序列化/return 值)。相信我,实施应用程序服务器的人并不笨,他们花了大量时间思考如何优化他们的服务器。这个几乎是免费赠品。
在我们的 JEE 应用程序中,我们有一个基础服务。这个服务应该有一个接口。
public interface BasisServiceA
这个服务的实现是一个bean。
@Remote(BasisServiceA.class)
@LocalBean
public class BasisServiceAImpl implements BasisServiceA {
...
}
此服务将被称为远程服务,例如通过 JMS,通过使用 远程 接口。
现在我们想在我们的应用程序内部使用相同的服务,通过使用 相同的接口。
问题:
- 我们如何使用接口从应用程序访问服务?
注意事项:
- 我们不想直接使用 class BasisServiceAImpl。
- @LocalBean 不允许限定符,但@Local 允许
- 使用与限定符相同的界面会使 DI 混淆?
- 第二个接口(例如 @Local(BasisServiceALocal) )是唯一的解决方案吗?
您正在尝试解决一个不存在的问题。只需在您的应用程序中注入远程接口,然后将其留给应用程序服务器来确定您是从相同的应用程序上下文调用 bean 并进行优化(即没有参数的序列化/反序列化/return 值)。相信我,实施应用程序服务器的人并不笨,他们花了大量时间思考如何优化他们的服务器。这个几乎是免费赠品。