除了部署的WAR外,AspectJ CTW编织无处不在?

时间:2011-12-12 15:39:30

标签: java maven-2 aspectj

我已经将AspectJ CTW添加到项目中,并且(看起来)可以很好地工作。我可以在测试中运行代码,它表明AspectJ正在拦截适当的方法。一旦我打包代码并在WAR中将其部署到Tomcat,它就不再有效了。

我尝试过很多不同的东西,但似乎都没有。我正在使用Maven 2中的Maven插件,我正在使用AspectJ的注释。构建中的所有反馈表明它正在寻找方法和编织。

为什么它一旦部署到Tomcat就会停止工作?

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.3</version>
            <configuration>
                <complianceLevel>1.6</complianceLevel>
                <source>1.6</source>
                <target>1.6</target>
                <showWeaveInfo>true</showWeaveInfo>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

1 个答案:

答案 0 :(得分:1)

对我的修复是将我的call()切入点转为执行()。

作为AspectJ的首次使用者,我点击了我的第一个“陷阱”,它实际上直接列在他们的常见问题解答中。通过反射调用的代码不会触发call()切入点。

http://www.eclipse.org/aspectj/doc/released/faq.php#q:reflectiveCalls

问题在于,在Web应用程序中,通过反射调用了一段有趣的代码。在测试中,它工作正常,因为直接调用类和方法。因此,测试工作正常但一旦部署就没有用。

该问题与Tomcat或部署无关。