将具有业务依赖关系的 JBoss AOP 拦截器打包为一个独立的应用程序



这是我的需求:

我有一个在 JBoss 5.1 上运行的 WebService 应用程序(具有 jboss-classloading 配置 export-all=NON_EMPTY 和 import-all=true)。我想在其上添加一些拦截器,但我无法更改旧的 WS WAR。

我的问题是什么:

我设法在JAR中打包了一个简单的拦截器,基本上记录了旧Web服务上的每个调用。但是为了实现我的目标,我需要使用 JAR 依赖项,如 XML 解析器、业务对象等......

如何将我的 AOP 拦截器及其依赖项打包到一个文件中?

我试过什么:

在 WAR 包中,我必须使用类似的 jboss-classload 策略来避免冲突,但在这种情况下,除了 WAR 本身中的类之外,我无法拦截任何其他内容,因此我无法拦截遗留的 WS 调用。

PS :我已经完成了所有基础知识,以使JBoss AOP正常工作:

  • pluggable-instrument.jar在垃圾箱文件夹中
  • -javaagent:pluggable-instrumentor.jar一起运行
  • 启用加载时间编织并包含包定义的aop.xml
  • 具有有效切入点配置的jboss-aop.xml(我想要在我的软件包中)

现在我通过构建 SAR 包(JBoss 服务存档)找到了解决方案。

SAR 文件如下所示:

AOP-interceptors.sar

  • 元信息/jboss-service.xml
  • AOP 拦截器.jar
    • 元信息/jboss-aop.xml
    • com.mypackage.aop.interceptors...
    • com.mypackage.aop.handlers...
    • com.mypackage.aop.business.logic...
  • XML解析器.jar
  • 业务对象.jar

SAR 文件部署在文件夹 : jboss-5.1/server/default/deployers/jboss-aop-jboss5.deployer/

我不知道SAR包应该做什么...有没有更好的方法可以做到这一点?

最新更新