Maven:javaee-api vs jboss-javaee-6.0

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

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

 javax javaee-api 6.0 provided  

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

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

  org.jboss.spec jboss-javaee-6.0 3.0.2.Final provided  

如果我使用它,我是否绑定到jboss所以我只能在这个应用程序中使用此服务器?

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

谢谢!

标准api被削弱,即缺少方法体。 测试结果certificate了这一点。 我曾经遇到过这个陷阱,对此并不满意。

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

你可以仔细看看Adam Biens博客

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

对于测试问题,您可以查看此主题 。

编辑:
顺便说一句,从现在开始这可能是非常有意义的。 对于Java EE 7的javaee-(web-)api,这个问题已经消失了( 来源 )

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