什么是"Java EE 7 API库"和"Java EE Web 7 API库"以及何时使用它们?

Tin*_*iny 3 netbeans glassfish java-ee java-ee-7 glassfish-4.1

我有一个在GlassFish 4.1/Java EE 7(NetBeans 8.0.2)上运行的完整Java EE项目,不使用Apache Maven.

根据项目功能,必须将CDI依赖项添加到项目/模块(即EE模块和Web模块(以及类库,如果有)).

很长一段时间以来,我一直在混淆人们建议将"Java EE 7 API库"或"Java EE Web 7 API库"添加到编译时类路径中作为CDI依赖项(这些库捆绑在NetBeans和使用NetBeans时可以随时使用.

由于这些库包含一组API,可能是从Servlet API开始的整个Java EE堆栈,因此当CDI功能为CDI时,将其中一个库添加到编译时类路径(特别是在EE项目中)是没有意义的. Java EE应用程序中需要的.

为什么在NetBeans项目中多次建议添加其中一个库,只是cdi-api.jar因为CDI依赖性足够?

在Java EE应用程序中需要CDI功能时,我没有在此站点上找到关于在NetBeans项目中准确添加哪个库的其他地方的规范答案.cdi-api.jar顺便说一句,添加只会很好.

Ond*_*Mih 5

全部javaee-api,javaee-web-api而且cdi-api只是API定义.它们不包含功能,它们只包含必要的接口,而不是编译代码.其结果是,没有的javaee-apijavaee-web-api应该包含在你的应用程序,因为他们已经被包含在应用程序服务器.该实现也由应用程序服务器提供,该服务器本身非常大,有时具有超过100MB的库.

如果您的应用程序仅依赖于CDI,那么您可以自由地将其cdi-api作为依赖项.如果你想从javaee获得更多,那么最好选择一个配置文件(完整或网络).但是,请注意,服务器始终至少提供Web配置文件中包含的所有API,因此也值得考虑使用它.有选择地选择依赖关系仅适用于不完全支持Java EE的应用服务器(例如Tom EE).在这种情况下,您有时甚至需要在应用程序中包含实现或将其放在服务器中.