jakarta-ee - 使用共享库与完全封装的 EAR 的优缺点

标签 jakarta-ee websphere

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

最佳答案

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

如果您在 EAR 中打包库,那么每个应用程序将创建自己的类实例,消耗一定数量的 permgen(或等价物)并占用静态数据的堆空间。

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

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

关于jakarta-ee - 使用共享库与完全封装的 EAR 的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1082047/

相关文章:

performance - WebSphere 6.1 - 仅从控制台获取分析信息

java - 每月重新加载 servlet 一次

websphere - 有没有办法从 IBM Websphere Application Server 管理控制台检索 EAR?

java - 线程中的异常 "main"org.hibernate.MappingException : invalid configuration in hibernate4

java - Spring 安全 : requires-channel ="https" causes redirect loop

java - 摆脱不同类加载器中的 ClassCastException

Javamail 发送带附件的邮件可以在 Windows 上运行,但不能在 Linux 上运行

java - 将动态 Web 项目转换为 JPA 项目?

java - IntelliJ 的“立即”窗口

java - Glassfish 3.1部署错误