各种Java打包策略的优缺点

IAm*_*aja 5 java deployment packaging

假设我正在为一些前端GUI(Swing)工具编写Java后端.这个后端将包含许多不同类型的用于中间件/业务逻辑的EJB,以及一些过滤和转发对这些EJB的请求的Web服务.

就包装和部署而言,我们有几种不同的可能策略:

  • 1个单片EAR/1 appserver - 将所有EJB打包到JAR中,将Web服务打包成WAR,并将所有这些打包到1个单片EAR中; 然后将EAR部署到应用服务器(例如,GlassFish)
  • 许多微小的EAR/1 appserver - 将每个组件(每个EJB和每个Web服务)打包到它自己的JAR/WAR中,然后将每个JAR/WAR打包到它自己的EAR中; 因此,组件与EAR之间的比例为1:1; 然后将每个EAR部署到同一个应用服务器
  • 许多小型EAR /许多应用程序 - 与上面相同,除了每个"微小"EAR都部署到自己的应用程序服务器; 因此组件和应用服务器之间存在1:1的相关性
  • 没有EAR /许多appservers - 与上面相同,除了删除"middlemen"EAR并将每个打包的JAR/WAR部署到自己的appserver

这四种策略各有哪些优点/缺点?有些更安全吗?高性能?更有利于群集/复制?这些策略中的一些只是愚蠢吗?!?

提前致谢!

cde*_*zaq 2

打包应用程序对安全性没有固有的影响。安全性所关心的是暴露的服务数量、单个服务器、请求端点等,以及服务访问需要保护的资源的方式,而不是打包方式。

也就是说,您在这里看到的主要问题是整体与模块化。一旦您了解是核心问题,所有有关权衡的现有文献都是相关的。

具体来说,您将看到:

  1. 可扩展性 - 许多小块的扩展更加灵活,因为您可以单独扩展每个块
  2. 复杂性 - 将小型服务连接在一起可以使单个服务的复杂性大大降低,因为它们需要担心的事情更少