Ткачество времени загрузки стороннего класса на Websphere 8 с использованием Aspectj - PullRequest
2 голосов
/ 23 декабря 2011

Мы используем AspectJ (1.6.12) для создания стороннего библиотечного класса ( SpringBeanELResolver ). Мы включаем LTW, используя <context:load-time-weaver/>, а наш аспект использует конфигурацию аннотаций AspectJ. На пристани все отлично работает с полным списком классов, которые можно увидеть в отладочном выводе Aspectj. Как описано в Spring, мы не используем -javaagent, так как он не нужен на платформе Websphere.

В Websphere 8 мы видим журналы, в которых Spring правильно инициализирует WebSphereLoadTimeWeaver, и Aspectj корректно инициализируется. Но мы видим только часть классов в отладочном выводе aspectj. SpringBeanELResolver также не включен для плетения. В результате наш класс не соткан.

Мы можем создавать классы, перечисленные в результатах отладки, например, наши занятия ..

Мы настраиваем политику загрузки классов на 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 ...

1 Ответ

0 голосов
/ 31 мая 2013

Поскольку все мои классы Java в $ {src.dir}, я даю исходный список для iajc. В списке источников есть только одна строка.

http://resultplanet.org/

...