我们使用AspectJ(1.6.12)编织第三方库类( SpringBeanELResolver )。我们使用<context:load-time-weaver/>
启用LTW,我们的方面使用AspectJ注释配置。在jetty上一切正常,在Aspectj的调试输出上看到完整的类列表。正如Spring上所记录的那样,我们不使用-javaagent,因为在Websphere平台上不需要它。
在Websphere 8上,我们看到Spring正确初始化WebSphereLoadTimeWeaver
的日志,并且Aspectj被正确地初始化。 但我们只看到了aspectj调试输出的一部分类。 SpringBeanELResolver 也不包含在编织中。因此,我们的类没有编织。
我们可以编织调试输出中列出的类,例如我们的课程..
我们将Classloading策略配置为PARENT_LAST。
以下是一些日志和配置:
Websphere SystemErr (此处未见大多数第三方类,包括 SpringBeanELResolver )
00000022 SystemErr R [CompoundClassLoader@1293b09] info AspectJ Weaver Version 1.6.12 built on Tuesday Oct 18, 2011 at 17:52:06 GMT
00000022 SystemErr R [CompoundClassLoader@1293b09] info register classloader com.ibm.ws.classloader.CompoundClassLoader@1293b09
00000022 SystemErr R [CompoundClassLoader@1293b09] info using configuration <path-to-ear>/our_war.ear/our.war/WEB-INF/classes/META-INF/aop.xml
00000022 SystemErr R [CompoundClassLoader@1293b09] info register aspect com.ourcompany.OurAspect
00000022 SystemErr R [CompoundClassLoader@1293b09] debug not weaving 'org.springframework.instrument.classloading.websphere.WebSphereClassPreDefinePlugin$Dummy'
00000022 SystemErr R [CompoundClassLoader@1293b09] debug not weaving 'org.apache.myfaces.shared_orchestra.util.ClassUtils'
00000022 SystemErr R [CompoundClassLoader@1293b09] debug not weaving 'org.apache.myfaces.orchestra.conversation.annotations.ConversationRequire'
...
Websphere SystemOut
00000022 DefaultContex I org.springframework.context.weaving.DefaultContextLoadTimeWeaver setBeanClassLoader Determined server-specific load-time weaver: org.springframework.instrument.classloading.websphere.WebSphereLoadTimeWeaver
aop.xml文件
<!DOCTYPE aspectj PUBLIC
"-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
<weaver options="-showWeaveInfo -verbose -debug">
<!-- only weave classes in packages below-->
<include within="org.springframework.beans.factory.access.el.*"/>
<include within="com.ourcompany.*"/>
</weaver>
<aspects>
<!-- weave in just this aspect -->
<aspect name="com.ourcompany.OurAspect"/>
</aspects>
</aspectj>
我认为CompoundClassLoader可能在WEB-INF / lib中加载所有第三方库时出现问题,或者 它是Aspectj和CompoundClassLoader之间的东西......