了解Websphere共享库的使用与在java项目中定义的库有什么关系?

时间:2016-09-02 20:36:57

标签: java websphere shared-libraries

有人可以帮助我理解使用Websphere共享库与在java项目中定义库吗?我是websphere的新手,并且不了解共享库的概念,只是将库类放在您正在处理的项目的lib文件夹中。

2 个答案:

答案 0 :(得分:3)

使用共享库有几个好处:

  1. 减少内存消耗。如果您有许多应用程序,则使用服务器关联的共享库或隔离的共享库允许JVM在内存中加载类的单个副本,而不是在应用程序中为库的每个副本加载类。
  2. 减小WAR的大小。如果您保留备份,这可以缩短部署时间,减少网络传输并减少存储大小。
  3. 改善环境的可管理性。如果您部署了许多应用程序并且由于修复而需要升级其中一个库,则重新打包/重新部署许多应用程序比更新中央库更费力。如果你需要更新应用程序"慢慢地"而不是一次性,您可以为不同版本的依赖项声明多个共享库;这种方法显然需要使用与应用程序相关的而不是与服务器相关的库,因此您需要使用隔离的共享库来获得此处列出的其他好处。
  4. 更好地支持本地库。如果您的应用程序需要使用本机库的库并且您在应用程序中打包库,那么通常无法重新启动服务器而不重新启动服务器,因为存在JVM限制,导致本机库被卸载或被加载多个申请。
  5. 缺点是应用程序通常与它们正在使用的库版本紧密耦合,因此将库与应用程序分离会使升级变得更加困难。

答案 1 :(得分:2)

布雷特提出了有效的观点。我将为#3的缺点添加更多细节。

对于#3升级库到新版本(例如由于修复而导致的示例)是一个好处。但是,根据我的经验,如果有多个应用程序在生产中共享相同的JVM并且它们都使用该库,则很难(a)及时地使用新版本的库(b)测试所有应用程序(c) )让所有利益相关者同意部署库修复,特别是如果他们在不同的业务部门。虽然应用程序可以通过将其类加载器策略设置为parent-last来覆盖父库,这意味着需要集成最新修订的应用程序可以在其EAR文件中执行此操作并覆盖共享库。但那会破坏共享库的好处。它归结为"分享" JVM环境以及同一JVM中的那些应用程序是否能够及时使用新版本的库(即通过测试)。