【问题标题】:Java EE application with too many webservices具有太多 Web 服务的 Java EE 应用程序
【发布时间】:2014-09-23 11:34:05
【问题描述】:

我正在使用一个 Java EE 应用程序,该应用程序公开了 150 多个 Web 服务合同,每个合同都有多个操作。

我认为这是更新容器中的应用程序时发布时间过长和 OutOfMemory 错误的原因。

我想知道如何修改这个应用程序架构以支持这种多重网络服务。

我正在使用 Java EE 5 规范。

把它分成多个war文件是个好办法吗?

也许是 OSGi。是否可以在 WAS 7 上使用 OSGi ?这是一个好的解决方案吗?


添加

也许扩展JVM的内存可以暂时解决问题,但还有其他顾虑,内存无济于事。

这个应用程序被多个应用程序访问。更新一个 Web 服务会影响使用另一个 Web 服务的所有客户端。我想了解如何解耦这个 EAR

【问题讨论】:

  • 你的容器会运行在同一个JVM上,所以我认为你真正需要的是一台拥有更多内存和更大JVM堆的机器
  • 您当前的最大堆大小是多少?您使用的是内置网络服务引擎还是第三方?
  • Web 服务是 JAX-WS 2.1。我没有关于服务器内存属性的信息,但我想知道一些关于应用程序架构本身的见解。加内存一时可能会解决问题,但随着应用的增加,问题又会再次出现。
  • "...在容器中更新应用程序时出现 OutOfMemory 错误..."。您是否使用热部署更新应用程序?如果是,可能需要重新启动服务器,并放置一个前端的负载平衡器以保持可用性。

标签: java web-services jakarta-ee osgi


【解决方案1】:

除非您使用卸载类的标志启动 JVM,否则每次更新都会在顶部添加相同数量的类。这将导致您出现 OOM 或更具体的 PermSpace 问题。除非您使用正确的设置、大量内存(您正在运行 JEE 应用程序对吗?)和 PermSpace 等的正确大小来启动您的服务器。您总是会遇到这种情况。 OSGi 部分也无法解决它。 而且这将始终依赖于 JVM 本身,Oracle JVM 确实支持卸载类,而从 8 开始它不再包含 PermSpace。虽然那时你必须观察堆栈:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2023-03-21
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多