2014-01-25 29 views
1

我想要使用我的Tomcat 7 webapp加載時間編織,以便從外部jar文件(位於WEB-INF/lib)中編織一個類。AspectJ沒有看到META-INF/aop.xml

我也做了以下內容:

  1. 啓動Tomcat的下列參數:-javaagent:/path/aspectjweaver-1.7.0.jar -classpath /path/aspectjrt-1.7.0.jar:etc

  2. 放置aop.xmlWAR_ROOT/META-INF/, WEB-INF/lib/META_INF, WEB-INF/lib and WEB-INF/

aop.xml文件:

<aspectj> 
<aspects> 
    <aspect name="ca.gc.agr.agrishare.web.jsf.chartlet.AgriShareGanttRendererAspect"/> 
</aspects> 
<weaver options="-verbose -debug -XnoInline"> 
    <include within="org.jfree..*"/> 
    <dump within="org.jfree..*" /> 
</weaver> 
</aspectj> 

無論身在何處,我把這個文件,我的目標類沒有穿好,我一直看到象這樣的錯誤:

[[email protected]] error can't determine implemented interfaces of missing type javax.validation.ValidatorFactory 
when weaving type org.hibernate.cfg.beanvalidation.TypeSafeActivator 
when weaving classes 
when weaving 
[Xlint:cantFindType] 

,它正試圖編織我指定的包之外的類的事實,考慮到服務器啓動時間增加了四倍,我認爲它試圖編織所有的類。

我錯過了什麼?

回答

2

想通了。

WAR_ROOT/META-INF/是webapp元數據,由servletContext.getResource("/META-INF/bla")查找。

WAR_ROOT/WEB-INF/classes/META-INF是java類的元數據,由getContextClassLoader().getResource("/META-INF/bla")查找。

我在我的Config項目(它在類路徑中)創建了META-INF/aop.xml,現在一切正常。