各种Java打包策略的优缺点

时间:2012-01-30 17:42:41

标签: java deployment packaging

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

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

  • 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 - 除了删除"中间人" EAR并将每个打包的JAR / WAR部署到自己的appserver

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

包装应用程序对安全性没有固有影响。公开的服务的,单个服务器,请求端点等,以及服务访问需要保护的资源的方式是安全性,而不是如何打包。

那就是说,你在这里看到的主要问题是单片与模块化。一旦你理解 是核心问题,所有关于权衡的现有文献都是相关的。

具体来说,您将看到:

  1. 可扩展性 - 许多小块可以更灵活地扩展,因为你可以自己扩展每个部分
  2. 复杂性 - 将小型服务连接在一起可以让您保持个性化服务的复杂性,因为他们不得不担心更少的事情