从Java EE6开始,可以将EJB放入WAR文件中。仍然有很好的技术理由将它们分开吗?我正在专门寻找我只能使用EJB JAR来做的事情,而我实际上无法使用WAR中嵌入的EJB来做。
有人可能会说模块化,但是老实说,我发现使用单独的JAR文件进行模块化既浪费时间,又使只能一起使用的东西浪费很多时间和类路径问题(如果以后需要分离,那就只是一个问题了)如果需要,将其重构为单独的JAR)。诸如guava之类的额外依赖项是不同的,因为它们不是EJB。
将所有内容保留在WAR中的另一个好处是,如果您不想这样做,甚至不需要EAR文件(除了以标准方式设置上下文根之外)。WAR文件可以包含所有支持依赖项,例如guava和ilk。
另一个可能是针对不是“ Web应用程序”的应用程序,这是有意义的,但是无论如何,我使用的大多数东西都是Web应用程序,这就是为什么我限定“针对Web应用程序”这个问题的原因。
我没有列出EJB客户端应用程序及其接口。实际上,我将使用Web服务而不是某种特定的语言来处理这种形式的连接。
从理论上讲,我可以在EJB中进行Web服务,但是这不适用于所有容器,尤其是Websphere,这要求您构建一个Web Router项目,该项目基本上是另一个WAR文件。
因此,仍然有充分的技术理由将它们分开吗?
没有技术原因,没有。我们在EJB 3.1的规范级别上做得很好,引入该规范是为了使过渡尽可能平滑。
我们缺少的一个地方是关于ejb-jar.xml
文件的主题。一个Web应用程序只能有一个WEB-INF/ejb-jar.xml
文件。即使在下的jar文件中有ejbs,也是如此WEB-INF/lib/
。如果这些罐子恰好包含META-INF/ejb-jar.xml
文件,则将其忽略。
这是有目的的,因为它ejb-jar.xml
包含以某种“全局”方式定义事物的功能,例如默认事务属性,安全约束,默认拦截器。最终决定以某种方式合并所有内容很尴尬。
我个人希望听到的抱怨比我们多-到目前为止,我还没有人提到他们发现整个Web应用程序只允许使用一个ejb-jar.xml作为限制。但是,如果人们突然开始抱怨,我们可以引入ejb-fragement.xml
与Servlet相同的概念,web-fragment.xml
以便将配置与WEB-INF/lib/
目录中的jar打包在一起。
当然,如果您正在阅读本文,并且有个人偏好,请在下面评论。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句