1

我正在尝试让加载时间编织与我的 Tomcat 7 webapp 一起使用,以便从外部 jar 文件(位于WEB-INF/lib)中编织一个类。

我做了以下事情:

  1. 使用以下参数启动 Tomcat:-javaagent:/path/aspectjweaver-1.7.0.jar -classpath /path/aspectjrt-1.7.0.jar:etc

  2. 放入aop.xml_WAR_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>

无论我将文件放在哪里,我的目标类都没有编织,并且我不断看到这样的错误:

[WebappClassLoader@495b317b] 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]

事实上,它试图在我指定的包之外编织一个类,并且考虑到服务器启动时间翻了两番,我认为它正在尝试编织所有类。

我错过了什么?

4

1 回答 1

2

弄清楚了。

WAR_ROOT/META-INF/是 webapp 元数据,由servletContext.getResource("/META-INF/bla").

WAR_ROOT/WEB-INF/classes/META-INF是 java 类元数据,由getContextClassLoader().getResource("/META-INF/bla").

META-INF/aop.xml在我的 Config 项目(位于类路径中)中创建,现在一切正常。

于 2014-01-25T05:47:10.563 回答