13

我想要一个用 maven 构建的 Java JEE6 项目,并且我想要它是标准的

所以,我把它放在我的 pom.xml 中:

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

像这样的项目,它应该在每个兼容的 JEE6 容器中运行(jboss、geronimo、glashfish 等)

那么,为什么这个jboss依赖存在呢?

<dependency>
    <groupId>org.jboss.spec</groupId>
    <artifactId>jboss-javaee-6.0</artifactId>
    <version>3.0.2.Final</version>
    <scope>provided</scope>
 </dependency>

如果我使用它,我是否与 jboss 绑定,所以我只能将这个服务器与这个应用程序一起使用?

总是使用标准的 javaee-api 不是更好吗?

谢谢!

4

2 回答 2

21

标准 api 被削弱,即缺少方法体。测试时会出现这种情况。我曾经遇到过这个陷阱,对它不是很满意。

因此,建议使用另一个包作为参考。

您可以仔细查看Adam Biens 博客

如果您确实需要,您还可以为不同的部署环境制作配置文件。但是,基本上我同意,可悲的是,这不是一个非常愉快的情况。

对于测试问题,您可以查看此线程

编辑:
顺便说一句,因为现在这可能很有趣。Java EE 7的 javaee-(web-)api 的这个问题已经消失(

于 2013-03-20T08:16:50.757 回答
2

java-api依赖的第一个解决方案是正确的方法:理想情况下你的应用程序不应该关心它工作的服务器环境。对于单元测试,您可以使用Arquillian,它可以帮助您在“家”中测试企业 bean 而不会感到头疼。如果您使用的是 jboss-javaee,您确定您的应用程序将在另一台服务器上部署并正常工作,而不是 jboss?

于 2015-02-25T04:36:14.887 回答