4

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

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

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

而且我只是无法弄清楚是什么导致了问题以及为什么应用程序在通过 netbeans 启动时运行良好。

Maven配置:

        <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.发布:

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

爪哇版:

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)

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

4

1 回答 1

1

这不一定是一个完整的答案,但链接应该会有所帮助:

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

Spring 使用 getDeclaredMethods 来确定通知的顺序,但 getDeclaredMethods 以未指定的顺序返回方法。(查看更多

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

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

于 2012-04-12T16:09:14.800 回答