【问题标题】:CDI on Tomcat 7 - does it make sense?Tomcat 7 上的 CDI - 有意义吗?
【发布时间】:2012-08-21 18:26:03
【问题描述】:

如果可以选择,我将 JBoss 7 用于使用 JSF 2 和 CDI 的 Java EE 6 项目。

但有时,客户项目的环境或多或少是设置好的 - 所以在一种情况下,我们仅限于 Tomcat(6 个或可能 7 个)。

所以,我阅读了几篇关于在 Tomcat 中使用 CDI(例如 WELD)和 JSF 2 的文章,这表明这样做基本上没有问题。

不过,我的问题是 - 这有意义吗?还是 servlet 容器不适合这种架构?有没有人有任何使用 Tomcat+CDI 的经验而不是演示项目?

提前致谢!

【问题讨论】:

  • 如果你能更新关于你最终如何决定的问题会很棒......
  • @jangroth 正如我所说 - 我的决定很容易,但如果最终决定是为了 Tomcat,我可以忍受它和我的战争中的一百个罐子,只要没有真正的阻塞点反对Tomcat+CDI。

标签: tomcat jsf-2 java-ee-6 cdi


【解决方案1】:

好问题,首先:)

将企业应用程序部署到 servlet 引擎是主要场景,例如春天,所以这当然是可能的。但是您会知道 Spring 是一个完整的 API 和配置文件生态系统,而不是您简单地放在服务器上并从中获得乐趣的几个 JAR。

我在 Tomcat 7 上使用 Weld 和 JSF 玩了很多次,效果非常好。但是 HelloWorldOnTomcat.java 与面向真实客户的真实应用程序之间存在重大差异。我相信你已经意识到了这一点。

我会说您将能够在相对较短的时间内编译出体面的设置。 CDI 和 JSF 都不会有问题。 但是根据您的具体要求,您将不得不处理开箱即用的 Tomcat 未涵盖的其他方面。安全、集群、故障转移、消息传递、异步等问题(以及事务,如 cmets 中所述)。

如果您(或多或少)精通这些要求,并且您即将进行的项目相当轻松,并且不应该控制下一个火星任务 - 我当然会尝试一下。

另一方面,如果您知道此类要求,我会寻找 (a) Java EE 应用服务器上的设置,或 (b) Tomcat 上的另一个堆栈。

【讨论】:

  • 我将添加到 Tomcat + JSF 和 CDI 未涵盖的功能列表中,即事务管理。如果您的应用程序不是只读的,您可能需要事务,因此您需要为其使用外部框架(您可以使用 spring)或自己做。由于 JEE6 容器至少与 Tomcat 一样轻,因此尝试推动一点 JEE6(TomEE 可以是一个很好的起点;))
【解决方案2】:

看看 Apache Tomee:

Apache TomEE,发音为“Tommy”,是一个全 Apache Java EE 6 Web 配置文件认证堆栈,其中 Tomcat 是顶级狗。 Apache TomEE 是 从一个普通的 Apache Tomcat zip 文件组装而成。我们从 Tomcat 开始, 添加我们的罐子并拉上其余的拉链。结果是添加了 EE 的 Tomcat 功能 - TomEE。

【讨论】:

  • 我没用过,但听说过这个项目。这确实是有道理的,但问题是正如我在帖子中所说,有时环境是在客户站点设置的,所以安装了 Tomcat 7,我们所能做的就是部署一个 WAR 文件。
  • 这种情况下,我认为你应该自己将所有组件包装到WAR文件中。使用 Maven 应该会有很大帮助。我不记得您是否必须为某些组件调整容器(Tomcat)中的任何配置。无论如何,看看 Apache TomEE 网站可能会有所帮助,因为他们在 Apache Tomcat 上实现了 JEE 堆栈的全功能集成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
相关资源
最近更新 更多