繁体   English   中英

对耳朵和战争使用相同的类加载器

[英]Using same classloader for ear and war

目前我们有超过 100 个 wars/ejbs 捆绑在一个耳朵里。 因为我们不想总是部署所有这些,所以我们希望将部署拆分为:

  • ejb耳

    • ejb1.jar
    • 实体.jar
  • 第一战

  • 第二次战争
  • 第三次战争

怎么可能从其中一场部署的战争中简单地查找 ejb1.jar - 如果可能的话。

我阅读了以下文档,但我不知道如何使它工作。

我可以在耳朵上查找 ejb,但我不能将它投射到接口。 这似乎是正确的,因为这是不同的 class 装载机。

请参阅: Java EE:代理无法转换为本地接口,可能是类加载问题?

要么使用导致编组和解组(性能)的远程接口,要么通过添加 deployment.MY_DEPLOYMENT_NAME 例如到jboss-deployment-structure.xml来引入从 WAR 到 EAR 的模块依赖性。 然后您使用相同的类加载器,但您的 WAR 可能在您重新部署 EAR 时离线 go。

参见例如https://access.redhat.com/documentation/en-us/jboss_enterprise_application_platform/6.1/html/development_guide/chap-Class_Loading_and_Modules#Dynamic_Module_Naming1

用于文档。

可以有不同的解决方案。

1) Package 进入 EAR 那些仅使用 EJB 的 WAR。 然后,您可以通过本地接口使用 EJB。 所有其他 WAR 仍然可以独立部署,它们不需要与 EAR 相同的 class 加载程序。

2) 使用远程 EJB。 Package 将它们使用的 EJB 的接口放入 WAR 中。 同样,不需要在同一个 class 加载程序中。 如果你担心远程 EJB 的性能,那么首先测试一下真正的性能。 Jboss 开发人员对性能进行了很多优化。 例如, 在这里阅读,他们优化了 EJB 调用

...避免进行不必要的服务器端通信,这些通信通常涉及网络调用、编组/解组等。


3) 分析 WAR 和 EJB 的依赖关系,以及 EJB 之间的依赖关系。 尝试识别 4-5 个 EJB 和 WAR 组或“集群”,它们彼此非常接近,并且只使用其他组中的少数 EJB,甚至不使用其他组中的 EJB。 然后将 package 这样的组分成单独的 EAR。 例如,您可以拥有:

  • 一个主 EAR,提供 20 个 EJB,负责用户和权限管理
  • 一个带有 10 个 EJB 和 5 个 WAR 的 EAR,用于产品管理
  • 一个带有 20 个 EJB 和 30 个 WAR 的 EAR,用于订单管理
  • 一个带有... EJB 和... WAR 的 EAR,用于装运管理

然后在大多数情况下,您将只部署其中一个 EAR,因此您的部署时间将快 4-5 倍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM