【问题标题】:Do I need to use MyFaces if I am using JBoss seam in my application?如果我在我的应用程序中使用 JBoss seam,是否需要使用 MyFaces?
【发布时间】:2013-04-05 06:37:49
【问题描述】:

我们有一个使用 Seam 的旧版基于 JSF 的 Web 应用程序。它部署在 Websphere 7.0 上。它的/WEB-INF/lib 中没有MyFaces JAR,它只有Seam JAR。

那么,应用程序如何获取 JSF JAR? JSF 在这个应用程序中实际上是如何工作的?

【问题讨论】:

  • Wepshere 7 有自己的为 Servlet 2.5 配置的类加载器和注入提供程序,以及捆绑在应用服务器的公共库目录中的 JSF 1.2 实现。仅将 MyFaces jar 添加到 WEB-INF\lib 可能行不通。查看此链接:wasbehindtheglass.blogspot.com/2011/11/…
  • @Ivaylo:请停止将库/框架/API 名称等非代码格式化为代码。它们不是代码!

标签: jsf myfaces jboss-seam


【解决方案1】:

JSF 作为 Java EE 规范的一部分,已经捆绑在符合 Java EE 的应用服务器中,例如 Glassfish、JBoss AS、Websphere 和 Weblogic。你不需要将它捆绑在你的 webapp 中。

您可能会感到困惑,因为您曾经使用过 Tomcat 或 Jetty 等准系统 JSP/Servlet 容器,并且经历过您需要手动提供 JSF 库。确实如此,准系统 JSP/Servlet 容器仅附带 JSP/Servlet(和 EL)库,而不附带其他 Java EE 工件,如 JSF、EJB、JPA 等。这就是为什么你需要将它与你自己的 webapp 捆绑在一起。

所以,要具体回答您的问题:不,如果 JSF 已经与目标服务器捆绑,则您不需要将 JSF 与您的 webapp 捆绑。

请注意,这完全与 JSF 实现无关(您明确提到了 MyFaces,而问题/答案同样适用于 Mojarra 等其他 JSF 实现)。

【讨论】:

  • 感谢您的回答。所以只是为了澄清 jboss seam 与 JSF 无关?因此,使用或不使用 jboss seam,应用程序将需要 Websphere(捆绑)中的 JSF jar,或者如果某些第三方实现则在 Web 应用程序库中?
  • Seam 不是 Java EE 的一部分。它只是对 JSF 的扩展,所以它确实需要 JSF。但是,如果服务器已经提供了 JSF 库,则您不需要自己提供它。
  • 我们拥有的遗留应用程序的 EAR 在应用程序本身中没有任何 JSF jar(尽管它有 jsf-facelets.jar)。它也有一些接缝罐。这意味着它使用与 websphere 捆绑的 jsf。
  • 是的,正如所回答的那样,JSF 已经捆绑在符合 Java EE 的应用程序服务器中。请注意,JSF 库绝对不属于 EAR。如果 webapp 需要捆绑 JSF,那么它们就属于 WAR(反过来可以放在 EAR 中)。
  • 它在类路径中有 JSF jars。但是生成EAR的ant脚本并没有在war中添加那些jar(捆绑在ear中)。
猜你喜欢
  • 2018-12-27
  • 2020-05-22
  • 1970-01-01
  • 2011-02-17
  • 2018-05-03
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多