【问题标题】:What is the workflow for application startup and configuration when using Apache TomEE使用 Apache TomEE 时应用程序启动和配置的工作流程是什么
【发布时间】:2012-04-18 08:42:21
【问题描述】:

我了解 Apache TomEE 是一个常规的 Tomcat 安装,其中 openejb 作为网络应用程序。

我试图了解所有这些是如何引导的。我会试着问几个有针对性的问题:

  • 应用程序启动顺序重要吗? openejb 应该在我的网络应用程序之前启动,还是相反,或者没关系?
  • 与前面的问题有关。企业应用程序如何向 openejb 注册它的 bean,或者 openejb 是否在同一台服务器中四处寻找企业应用程序,以获取 EJB?
  • 在非常外行的层面上,当 openejb 是一个不同的 Web 应用程序时,他们如何能够提供作为 EJB 容器的 openejb。 (IIRC Tomcat 中的每个 webapp 都有一个不同的类路径,它们不能互相影响)

任何其他重要信息。

【问题讨论】:

    标签: jakarta-ee openejb apache-tomee


    【解决方案1】:

    通过conf/server.xml 中的这一行引导集成:

    <Listener className="org.apache.tomee.loader.OpenEJBListener" />
    

    这会在启动时立即发生,然后再启动任何应用程序。 &lt;tomcat-home&gt;/webapps/openejb/lib 目录中的库被添加到 Tomcat 系统类加载器中,安装另一个侦听器以参与部署,从那时起,一切都使用 Tomcat 生命周期中的事件发生。 Tomcat 将在应用程序启动(部署)和关闭时发出几个事件。 Tomcat 本身使用它们来部署 servlet,本质上集成只是更多相同。包括 Tomcat 在内的其他供应商也使用这些挂钩。从这个角度来看,集成真的很无聊:)

    唯一有趣的变化是将额外的库放在一个战争文件中。这样做实际上只是为了尽可能简单地向现有 Tomcat 安装交付和添加额外的库(并且尽可能容易地删除)。来自&lt;tomcat-home&gt;/webapps/openejb/lib 的所有库都可以轻松进入&lt;tomcat-home&gt;/lib。此时,您可能想要webapss/openejb/ 战争的唯一目的就是能够通过 HTTP 调用 EJB。

    所以简短的答案是:

    • 应用程序启动顺序无关紧要
    • EJB 部署与 Servlet 部署并行发生
    • 在 Tomcat 自身启动时立即将 Jar 添加到 Tomcat 系统类加载器中

    在另一个答案中要注意的有趣的事情是,Tomcat 实际上在类路径中只有两个 jars 启动。 Tomcat 本身实际上会在启动时自动添加来自&lt;tomcat-home&gt;/lib/ 的所有 jar。我们基本上在做同样的事情,只是来自&lt;tomcat-home&gt;/webapps/openejb/lib

    我认为我们实际上并没有测试过将库移动到 &lt;tomcat-home&gt;/lib/ 并删除 openejb webapp(在即将发布的最终版本中称为 tomee.war),但我会做一个记录来尝试一下。支持甚至默认情况下似乎是一件好事。您可以删除 Tomcat 管理器和 ROOT Web 应用程序,因此也可以轻松删除 openejb.war。

    【讨论】:

    • 感谢您的精彩回答:-)
    • 您提到'此时,您可能希望 webapss/openejb/ 战争的唯一目的是能够通过 HTTP 调用 EJB。如果答案很明显,我很抱歉,但是如果我们在 /lib 中有所有 openejb jar,为什么我们不能为 EJB 的 HTTP 请求提供服务?
    • 我的意思是,如果库被移动并且 webapps/openejb 战争被删除,那么 EJB over HTTP 功能将被删除。
    • 忍不住尝试移动的库。我不得不调整我们使用的 Listener,但它工作得很好,并且实际上使 Eclipse 工具变得更容易和更快。现在通过 TCK 运行它,如果它看起来不错,我们可能会在最终版本中看到这一点——投票在 4 小时内上升。非常感谢你的问题——谁知道它会导致这个。
    • 感谢您进行实验并通过 TCK 运行它。易于工具支持总是非常受欢迎:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    相关资源
    最近更新 更多