Spring 3.1,Aspect,Tomcat - 圆度误差

时间:2012-04-11 16:40:51

标签: java spring tomcat aspectj

我有一个非常复杂的Web应用程序,其中整个DAO已外包给@Aspect类,无论何时访问需要这些的方法,它都将加载数据库实体。

当从netbeans启动Web应用程序时,整个方法运行得非常好。但是,当我尝试将相同的.war部署到独立的tomcat(相同版本的tomcat,相同版本的java)时,我在启动时遇到以下异常:

Caused by: java.lang.IllegalArgumentException: Advice precedence circularity error

而我无法弄清楚导致问题的原因以及启动netbeans时应用程序运行正常的原因。

Maven config:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <fork>false</fork>
                <meminitial>256m</meminitial>
                <maxmem>768m</maxmem>
                <source>1.6</source>
                <target>1.6</target>
                <encoding>${project.build.sourceEncoding}</encoding>
                <showWarnings>true</showWarnings>
                <showDeprecation>false</showDeprecation>
                <debug>true</debug>
                <debuglevel>lines,vars,source</debuglevel>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
                <webXml>src\main\webapp\WEB-INF\web.xml</webXml>
            </configuration>
        </plugin>

春天:3.1.0.RELEASE:

<context:annotation-config />
<context:component-scan base-package="my.package" />
<mvc:annotation-driven />
<mvc:resources mapping="/resources/**" location="/resources/" />
<aop:aspectj-autoproxy />

Java版:

java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

老实说,我不知道我应该在这篇文章中包含哪些信息,因为我甚至不知道从哪里开始......如果需要,请随时询问更多信息。

1 个答案:

答案 0 :(得分:1)

这不一定是完整的答案,但链接应该有用:

听起来好像这里的不同之处在于你的机器正在返回特定类的声明方法的顺序,这会改变Aspect建议的运行方式:

  

Spring使用getDeclaredMethods来确定建议的顺序,   但getDeclaredMethods以未指定的顺序返回方法。 (see more

还有一个与您的问题非常相似的问题的Spring票证: SPR-5314

希望这有点帮助。祝你好运。