是否可以使用AspectJ在本地方法調用上設置切入點?我嘗試以下方面:AspectJ - 在本地方法調用上的切入點
public aspect EmailAspect {
pointcut conn() : call(* java.net.PlainSocketImpl.socketConnect(..));
before() : conn() {
System.out.println("Connecting");
}
}
但它不起作用。我也沒有通過谷歌搜索找到很多相關信息(除了這http://blog.jayway.com/2007/02/16/static-mock-using-aspectj,但不清楚是否有可能&如何做到這一點)。
我試圖在Eclipse中調試我的測試代碼(它只連接到一些TCP本地端口)並且eclipse停在socketConnect()斷點處。
謝謝。
UPDATE
這可能是原因:
AspectJ - Load-time weaving, privileged aspect and pointcut on private method of JRE class
對不起,我忘了提,我不想使用源代碼編織,因爲我不希望包括全JDK在我的編譯代碼(我用加載時織入)。我認爲問題在於socketConnect()是封裝私有的,方面沒有特權。 – batto 2011-06-07 17:06:47
@batto這聽起來像是一個可能的罪魁禍首。道歉,我有很多方面的理論,但沒有實踐經驗。 – Atreys 2011-06-07 17:11:49