2

我们使用 AspectJ(1.6.12) 来编织第三方库类(SpringBeanELResolver)。我们使用 启用 LTW <context:load-time-weaver/>,我们的方面使用 AspectJ 注释配置。在 Aspectj 的调试输出中看到的完整类列表在码头上一切正常。如 Spring 中所述,我们不使用 -javaagent,因为它在 Websphere 平台上不需要。

在 Websphere 8 上,我们看到 Spring 正确初始化的日志WebSphereLoadTimeWeaver,并且 Aspectj 被正确初始化。但是我们在 aspectj 的调试输出上只看到了一部分类。SpringBeanELResolver也不包含在编织中。结果,我们的班级没有被编织。

我们可以编织调试输出中列出的类,例如我们的类..

我们将 Classloading 策略配置为 PARENT_LAST。

以下是一些日志和配置:

Websphere SystemErr (包括SpringBeanELResolver在内的大多数第 3 方类在这里都看不到)

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 中的所有 3rd 方库时遇到问题,或者,它介于 Aspectj 和 CompoundClassLoader 之间......

4

1 回答 1

0

由于我所有的 Java 类都在 ${src.dir} 中,因此我将源列表提供给 iajc。在源列表中只有一行。

http://resultplanet.org/

于 2013-05-31T06:21:28.440 回答