gpt4 book ai didi

java - 在这种情况下,业务代表和服务定位器应该驻留在哪里才能不产生循环依赖?

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:19 26 4
gpt4 key购买 nike

我正在 Eclipse Luna 中使用 Java 1.7、XDoclet 1.2.3、W​​ildFly 8.2.1.Final、Dynamic Web Module 2.5、EJB 2.1。

  • 我有一个名为P001_EAR
  • 我有一个名为 P001_WAR 的动态 Web 项目。
  • 我有一个名为 P001_EJB 的 EJB 项目。
  • 我有一个名为 P001_EJBClient 的 EJB 客户端项目。
  • 我有一个名为 P001_SRC 的实用程序项目。

P001_SRC包含数据层、域对象、业务接口(interface)、帮助器类。

P001_EJB 具有实现业务接口(interface)的无状态 session EJB。它的引用号为P001_SRC

P001_EJBClient包含EJB的远程和本地接口(interface)。它的引用号为P001_SRC

P001_WAR 包含 Web 内容监听器、过滤器、Servlet、JSP、HTML。它的引用号为P001_SRC

这是一个典型的场景:

JSP调用Servlet,Servlet调用Business DelegateBusiness Delegate调用EJB(使用ServiceLocator),EJB执行业务操作。

问题是把业务委托(delegate)放在哪里?

我正在考虑将它们放入 P001_SRC 中,但是 Business Delegate 需要引用 P001_EJBClient 来执行它们的操作,这意味着循环依赖。

您将如何解决这个问题?

问题还在于将服务定位器放在哪里?它会与 Business Delegate 放在同一个项目中吗?

谢谢

最佳答案

在经典的 J2EE 设计模式中,EJB 的每个客户端模块都有自己的业务代表,它了解实际的 EJB。在您的场景中,它将位于 WAR 中(因为它是 EJB 的客户端)。同样,您的服务定位器将与您的业务代表一起驻留,并提供有关您的 EJB 所在位置的数据。

但是说真的,这是某种练习还是学校/面试问题?或者我们正在回到过去? :-)

如果这是一个新的应用程序,我会认真考虑从 EJB 2.x 转向 EJB 3.x,因为它简化了很多。您甚至不能说您“无法移动”,因为您已经在使用支持 EJB 3.x 的应用程序服务器。

关于java - 在这种情况下,业务代表和服务定位器应该驻留在哪里才能不产生循环依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34138068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com