与TomEE1.7.x建议的JSF依赖关系是什么?

时间:2015-12-26 08:11:02

标签: maven jsf jsf-2.2 tomee mojarra

我在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布局问题(使用bootstrap css)。 将其降级到2.0.x版会导致相同的布局问题。 我知道我可以解决它,但需要几个小时。

我想问的是:

  1. 在TomEE1.7.x中使用glassfish面 2.2.x 是好还是坏? TomEE的描述说它只支持JSF 2.0,但到目前为止,它工作得很好(我没有什么问题,但这些问题似乎与此版本无关)。
  2. 删除glassfish面向依赖项并使用默认的MyFaces更好吗?
  3. 如果我选择glassfish服务器而不是TomEE,我的情况会更好吗?
  4. 是的,我昨天问了另一个问题: JSF2.0 Some facesmessages not sent to redirected page on error handling

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

    谢谢。

1 个答案:

答案 0 :(得分:3)

正如您自己所说,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坐标(以及更多有用的入门信息)。