我正在开发一个项目,该项目由部署在JBoss Application Server上的多个ESB应用程序组成。
每个ESB应用程序通过几个动作(它们扩展AbstractActionLifecycle)处理消息(验证,丰富......); 其中一些操作对于所有应用程序都是相同的。
为避免代码重复,我将所有多次使用的操作移动到CommonService.esb应用程序中。这种方法到目前为止工作正常,除了一个问题:
当我重新部署CommonService.esb时,我希望重新加载所有操作。 然而,这种情况并非如此。没有创建新的操作实例,旧实例仍然存在。 我理解为什么会发生这种情况(JBoss仍然引用了这些操作,因此没有垃圾收集),但我想知道是否有修复它。
我可以问JBoss重新加载它的动作吗?是否有更好的方法来分享在多个地方使用的行动?
答案 0 :(得分:2)
一旦被告知两个项目之间存在依赖关系,JBoss就可以/将重新加载这些操作。
我将以下内容添加到所有其他项目的META-INF / deployment.xml中。
<?xml version="1.0" encoding="UTF-8"?>
<jbossesb-deployment>
<depends>jboss.esb:deployment=CommonServices.esb</depends>
</jbossesb-deployment>