我正在使用EJB3的现有Web应用程序。我需要做的是在这个应用程序中编织一些方面,以便在匹配某些特定方法(持久化bean之前和之后)之后记录一些信息。
我正在以耳格式在Jboss服务器中部署我的Web应用程序。 ear包含war(servlets)和jar(会话bean和实体bean)。
有关这怎么可能的想法?我是否必须将我的方面放在罐子里或者我必须创建一个新罐子(专门用于方面)?
顺便说一下,我正在为这个项目使用eclipse。所以我的jar对应一个EJB项目,我的战争对应一个动态的web项目。
感谢您的回答
答案 0 :(得分:1)
据我所知,对于网络应用程序来说,它只能通过加载时编织来实现(不应该与编译时混合,它们彼此不兼容)。为此,您应该执行以下操作:
创建aop.xml
(link到文档如何执行此操作)并将其放入项目的META-INF
文件夹中。
将aspectjweaver/tools/rt
个jar添加到您的依赖项中。
禁用编译时编织(这是pom.xml中的配置。阅读更多there)
将以下参数添加到您的app-server 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>