gpt4 book ai didi

java - 方面j : deploying aspects in an existing web application

转载 作者:行者123 更新时间:2023-12-01 11:23:10 25 4
gpt4 key购买 nike

我正在开发一个使用 EJB3 的现有 Web 应用程序。我需要做的是将一些方面编织到这个应用程序中,以便在匹配某些特定方法后(在持久化bean之前和之后)记录一些信息。

我正在以ear 格式在Jboss 服务器中部署我的Web 应用程序。 Ear 包含一个 war(servlet)和一个 jar( session Bean 和实体 Bean)。

知道这怎么可能吗?我是否必须将方面放入 jar 中,还是必须创建一个新 jar(专门用于方面)?

顺便说一句,我在这个项目中使用 Eclipse。所以我的jar对应一个EJB项目,我的war对应一个动态web项目。

谢谢您的回答

最佳答案

据我所知,对于网络应用程序来说,只能通过加载时编织来实现这一点(不应与编译时编织混合,它们彼此不兼容)。为此,您应该执行以下操作:

  • 创建 aop.xml(link 参见文档如何执行此操作)并将其放入项目的 META-INF 文件夹中。

  • aspectjweaver/tools/rt jar 添加到您的依赖项中。

  • 禁用编译时编织(这是 pom.xml 中的配置。了解更多 there )

  • 将以下参数添加到应用服务器的 JVM 中:-javaagent:pathto/aspectjweaver.jar ( documentation )

  • aspectjweaver.jar 添加到服务器的资源

就是这样。

您应该在 pom.xml 中禁用编译时编织(当然,如果您使用 Maven)。不幸的是,我没有尝试在没有 Maven 的情况下做到这一点(仅使用 Eclipse AspectJ 插件)。它可能是这样的。

<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7</version>
<configuration>
<!-- disabling -->
<outxml>true</outxml>
<XterminateAfterCompilation>true</XterminateAfterCompilation>
<!-- disabling -->
</configuration>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

关于java - 方面j : deploying aspects in an existing web application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31028127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com