TomEE1.7.x 推荐的 JSF 依赖项是啥?

Posted

技术标签:

【中文标题】TomEE1.7.x 推荐的 JSF 依赖项是啥?【英文标题】:What are the recommended JSF dependencies with TomEE1.7.x?TomEE1.7.x 推荐的 JSF 依赖项是什么? 【发布时间】:2016-03-31 21:25:21 【问题描述】:

我一直在 TomEE 1.7.3(基于 JavaEE6)上开发 JSF2.0(我不太确定 JSF 版本)应用程序。

在我的 Maven pom.xml 中,我从许多示例中复制了太多依赖项,但我将它们降低到最低要求。 Bellow 是我的 pom.xml 的“依赖项”部分:

<dependencies>
    <!-- JavaEE6 -->
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
    </dependency>
    <!-- /JavaEE6 -->

    <!-- OmniFaces for JSF, @Eager, postback same request parameters, etc. -->
    <dependency>
        <groupId>org.omnifaces</groupId>
        <artifactId>omnifaces</artifactId>
        <version>1.8.3</version>
    </dependency>
    <!-- /OmniFaces -->

    <!-- glassfish faces (is it called mojarra??) -->
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.2.12</version>
        <scope>runtime</scope>
    </dependency>
    <!-- /glassfish faces -->

    <!-- some mysql connector -->
    <!-- some aws sdks, s3, ec2, etc -->
    <!-- some apache commons, StringUtils. etc -->
    <!-- some apache velocity -->
</dependencies>

org.glassfish#javax.faces#2.2.12 依赖也可以删除, 但它会导致 html 布局问题(使用引导 css)。 将其降级到版本 2.0.x 会导致相同的布局问题。 我知道我可以修复它,但需要几个小时。

我想问的是:

    在 TomEE1.7.x 中使用 glassfish 面孔 2.2.x 是好还是坏? TomEE 的描述说它只支持到 JSF 2.0,但到目前为止,它几乎可以正常工作(我有一些问题,但似乎与这个版本无关)。 是否最好删除 glassfish faces 依赖并改用默认的 MyFaces? 就我而言,如果我选择 glassfish 服务器而不是 TomEE 会更好吗?

顺便说一句,我昨天问了另一个问题: JSF2.0 Some facesmessages not sent to redirected page on error handling

我意识到我必须先清理我的项目,这样可能有助于减少我的问题。

谢谢。

【问题讨论】:

【参考方案1】:

正如您自己所说,TomEE 是一个 Java EE 6 容器(而不是像 Tomcat 这样的准系统 JSP/Servlet 容器)。因此,它已经(几乎)提供了 Java EE 6 provided 的所有内容,包括 JSF 2.0/2.1。几乎,因为它实际上是一个 Java EE Web 配置文件容器。所以你实际上应该使用javaee-web-api 工件ID。

只有这样就足够了:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>

作为 Apache 产品,其捆绑的 JSF 实现实际上是 MyFaces,而不是 Mojarra。

如果您打算使用 JSF 2.2,它是 Java EE 7 的一部分,您应该改用 TomEE 7 并在 pom 中更改版本。

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>

本月刚刚发布了一个里程碑,请参阅downloads page。 TomEE 7 的替代品是 WildFly 8+ 或 Payara 4+。

另见:

Our JSF wiki page - 还包含 JSF 安装说明和 Maven 坐标(以及更多有用的入门信息)。

【讨论】:

谢谢。需要明确的是,您是否建议在我使用 TomEE 时使用默认的 MyFaces(而不是 org.glassfish#javax.faces)?如果是这样,我会快速将html布局调整为MyFaces,然后,我尝试TomEE7的第一个里程碑! 两者都很好。如果你真的想使用 Mojarra,你应该在服务器端升级(只需将其 /lib 文件夹中的 MyFaces jar 替换为 Mojarra jar),而不是在 webapp 端,所以 pom 保持不变。 /lib 对我也有帮助,我什至不知道这是必要的,再次感谢! 通常只有当服务器已经提供了它。不客气。 我在修复布局时遇到了困难,它与omniFaces有关,所以我提出了另一个问题:***.com/questions/34471378/…

以上是关于TomEE1.7.x 推荐的 JSF 依赖项是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Twilio 的 SMS 验证 gradle 依赖项是啥?

定位经度和纬度的 gradle 编译依赖项是啥?

对于 N:M 关系,在 MongoDB 中推荐的级联删除等效项是啥?

使用 hibernate、hibernate 注释和 ehcache 的 Maven 依赖项是啥?

Maven 中未使用/未声明的依赖项是啥?拿他们怎么办?

推荐的 JSF 2.0 CRUD 框架 [关闭]