2015-08-26 30 views
1

我們在JBoss 7.1.1決賽 運行我們的Spring應用程序,我們需要攔截org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway的sendAndReceive方法的執行,我們有我們的AspectJ我們自己的bean可以正常工作,但我們無法使用它編織(加載時間)HttpRequestHandlingMessagingGateway類。 編織彈簧骨架豆有沒有任何限制?有關如何做的建議? 在我們的aop.xml文件,我們有插裝彈簧HttpRequestHandlingMessagingGateway用AspectJ方面

<weaver options="-verbose -showWeaveInfo -debug"> 
    <include within="org.springframework.integration.http.inbound.*"/> 
</weaver> 

我們也嘗試添加weaveDependecies我們POM阻止如下

<weaveDependencies> 
    <weaveDependency> 
    <groupId>org.springframework.integration</groupId> 
    <artifactId>spring-integration-http</artifactId> 
    </weaveDependency> 
</weaveDependencies> 

,但它並沒有幫助

+0

我不確定,但我知道'sendAndReceive()'是一個**保護的**方法。所以,這對織布工來說是無形的。以及任何「最終」方法。 –

+0

嗨@Artem,感謝您的評論,您可能在這裏有一個觀點,但恐怕問題在更高層次(到目前爲止)。爲了測試我們試圖編織org.springframework.integration.core.MessagingTemplate.sendAndReceive(..)這是一個公共的非最終方法,但沒有編織。 –

+0

我認爲我們錯過了一些東西,在日誌中我們看到許多「編織」調試消息,包括我們的類以及例如hornetq,但沒有與Spring類相關(以及對於任何EJB或Servlet我們都有),似乎AspectJ weaver –

回答

0

免責聲明:我不是Spring用戶,而不是AspectJ專家。

sendAndReceive方法受保護,爲true。但是在AspectJ中,只有在Spring AOP中有正確的切入點,這不是問題。因此,如果您使用AspectJ LTW,這不是根本原因。

根據Javadoc,在這個包中有三個類sendAndReceive,但每個類都從類org.springframework.integration.gateway.MessagingGatewaySupport繼承它。所以也許你想include within那個包或類,否則該類中的一個execution()連接點將被排除在編織之外。

+0

沒有提供EJB,Servlet和Spring相關的類感謝您的評論。我嘗試過,但沒有任何區別。由於在所有的Spring類已經被JBoss類加載器加載之後初始化了AspectJ,所以Spring類對於編織器是不可見的嗎?如果確實如此,有沒有辦法改變這種行爲? –

+0

對不起,我沒有回答這麼長時間,但自從八月份以來我非常忙碌。我剛剛查看了我的SO收件箱。如果你仍然沒有解決你的問題,請發佈[SSCCE](http://sscce.org/),最好是在GitHub上構建一個Maven,並且我可以幫你。您提供的信息不足以找出問題的根本原因。 – kriegaex