Aspectj:在现有Web应用程序中部署方面

时间:2015-06-24 13:35:40

标签: java eclipse servlets ejb-3.0 aspectj

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

我正在以耳格式在Jboss服务器中部署我的Web应用程序。 ear包含war(servlets)和jar(会话bean和实体bean)。

有关这怎么可能的想法?我是否必须将我的方面放在罐子里或者我必须创建一个新罐子(专门用于方面)?

顺便说一下,我正在为这个项目使用eclipse。所以我的jar对应一个EJB项目,我的战争对应一个动态的web项目。

感谢您的回答

1 个答案:

答案 0 :(得分:1)

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

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

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

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

  • 将以下参数添加到您的app-server JVM -javaagent:pathto/aspectjweaver.jardocumentation

  • 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>