使用共享库与完全封装的EAR的优点和缺点

zka*_*hik 5 websphere java-ee

我们的团队构建并拥有一个Web服务框架.实际构建Web服务的其他团队使用我们的框架来实现一些常见功能.包装EAR有两种选择.选项1是将所有框架jar都内置到EAR中.选项2是在应用程序服务器中配置共享库,并使所有应用程序都使用该库.我们有可能部署多达100个EARS,这将使用此框架.在构建,可管理性和开发方面,这种方法有哪些优缺点.我们正在使用websphere.

kdg*_*ory 8

基本的权衡是内存消耗与版本管理.

如果在EAR中打包库,那么每个应用程序将创建自己的类实例,消耗一些permgen(或等效的)以及占用静态数据的堆空间.

如果将库存储在应用程序li​​b目录中,则每个类只有一个实例.但是,这意味着使用该库的每个应用程序必须使用相同的版本,并且(除非确保向后兼容性)必须同时升级.

鉴于您正在谈论100个EAR,版本管理问题可能会很大.除非您的库非常庞大(并且我将假设您在具有大量内存的64位服务器上运行,因此请大量使用),或者永远不会改变(不太可能),我建议打包与EAR.