Maven: javaee-api vs jboss-javaee-6.0

2022-09-04 08:18:11

我想要一个用 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不是更好吗?

谢谢!


答案 1

标准 api 是残缺的,即缺少方法主体。这在测试时证明。我曾经遇到过这个陷阱,对它不是很满意。

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

您可以仔细查看Adam Biens博客

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

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

编辑:
顺便说一句,因为现在这可能是间歇性的。对于 Java EE 7 的 javaee-(web-)api(source),此问题已消失)


答案 2

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


推荐