繁体   English   中英

打包Java EE应用程序

[英]Packaging a Java EE Application

我有一个带有一个EJB和几个Web模块的企业项目(EAR),这些Web模块具有许多共同的类,每个项目的类都完全相同,因此,如果我修改其中一个,则必须手动复制以及其他项目的代码。 我不想将它们放在我的EJB模块中,因为它们使用了大量的前端相关资源。

有没有一种方法可以在Web项目之间共享这些类?

Obs:他们还使用EJB模块中的类和资源。

使用所有公共类制作另一个模块,并将其打包为Jar。 然后将jar作为依赖项添加到另一个项目。

Maven应该是该项目的好工具。

无法在.war之外拥有能够注入特定于Web的资源的共享类。

我将普通类重构为单独的.jar。 您可以使它们成为EJB,也可以使它们成为常规类。 无论哪种方式,您都不能注入特定于Web的资源。 .wars中的类将必须传递诸如方法参数之类的东西。 对于EJB,您不能直接传递不可序列化的对象,例如HttpServletRequests。 我不知道这是否会造成重大障碍。

EJB .jar可以放置在.ear中的任何位置,但是如果您选择制作非EJB .jar,则可以将其放置在.ear文件的lib目录中。 如果您不编写无接口EJB,那么它也是EJB接口的好地方。 在Java EE规范的“应用程序组装和部署”一章中:

.ear文件可能包含一个目录,其中包含打包在JAR文件中的库。 .ear文件的部署描述符的library-directory元素包含此目录的名称。 如果未指定library-directory元素,或者.ear文件不包含部署描述符,则使用名为lib的目录。 空的library-directory元素可用于指定没有库目录。

该目录中所有扩展名为.jar文件(但不包括子目录)必须对EAR文件中打包的所有组件(包括应用程序客户端)可用。 这些库可以使用本文描述的任何技术引用与应用程序捆绑在一起或单独安装的其他库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM