2015-06-24 18 views
0

我正在使用EJB3的现有Web应用程序。我需要做的是编写一些方面到这个应用程序中,以便在匹配某些特定的方法(保存bean之前和之后)之后记录一些信息。Aspectj:在现有的Web应用程序中部署方面

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

任何想法如何可能?我必须将我的方面放在罐子里吗?还是必须创建一个新罐子(专门用于方面)?

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

谢谢你的答案

回答

1

据我知道web的应用程序,这只是可能的加载时间这样做织(不应该与编译时一个混合,它们不兼容彼此)。为了实现这一目标,你应该做到以下几点:

  • 创建aop.xmllink的文档如何做到这一点),并把它放到你的项目的META-INF文件夹。

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

  • 禁止编译时编织(这是在你的pom.xml的配置。更多there

  • 添加到您的应用程序的服务器的JVM以下参数-javaagent:pathto/aspectjweaver.jardocumentation

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

就是这样。

你应该禁用编译时织入你的pom.xml文件(如果你使用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> 
+0

谢谢你的回答。你对如何在eclipse中禁用编译时编织有任何想法吗? –

+0

@MohammedElMoumni你可以看看一些更新。 –

+0

@MohammedElMoumni BTW你使用maven吗? –