2011-12-23 6 views
2

우리는 제 3 자 라이브러리 클래스 (SpringBeanELResolver)를 짜기 위해 AspectJ (1.6.12)를 사용하고 있습니다. 우리는 <context:load-time-weaver/>을 사용하여 LTW를 활성화하고, 우리 aspect는 AspectJ annotation 설정을 사용한다. 모든 것은 Aspectj의 디버그 출력에서 ​​볼 수있는 클래스의 전체 목록을 가지고 부두에서 잘 작동합니다. Spring에서 문서화 된 것처럼 Websphere 플랫폼에서는 -javaagent가 필요 없으므로 -javaagent를 사용하지 않습니다.Aspectj를 사용하여 Websphere 8에서 제 3 자 클래스로드하기

웹 스피어 8에서, 스프링이 정확하게 WebSphereLoadTimeWeaver을 초기화하는 로그를 볼 수 있으며, Aspectj가 정확하게 초기화되었다는 것을 알 수있다. 하지만 aspectj의 디버그 출력에 클래스의 일부만 표시됩니다. SpringBeanELResolver도 제직에 포함되지 않습니다. 그 결과 우리 수업은 짜여지지 않았습니다.

디버그 출력에 나열된 클래스를 만들 수 있습니다 (예 : 클래스들 ..

클래스로드 정책을 PARENT_LAST로 설정합니다.

00000022 DefaultContex I org.springframework.context.weaving.DefaultContextLoadTimeWeaver setBeanClassLoader Determined server-specific load-time weaver: org.springframework.instrument.classloading.websphere.WebSphereLoadTimeWeaver 

00000022 SystemErr  R [[email protected]] info AspectJ Weaver Version 1.6.12 built on Tuesday Oct 18, 2011 at 17:52:06 GMT 
00000022 SystemErr  R [[email protected]] info register classloader [email protected] 
00000022 SystemErr  R [[email protected]] info using configuration <path-to-ear>/our_war.ear/our.war/WEB-INF/classes/META-INF/aop.xml 
00000022 SystemErr  R [[email protected]] info register aspect com.ourcompany.OurAspect 
00000022 SystemErr  R [[email protected]] debug not weaving 'org.springframework.instrument.classloading.websphere.WebSphereClassPreDefinePlugin$Dummy' 
00000022 SystemErr  R [[email protected]] debug not weaving 'org.apache.myfaces.shared_orchestra.util.ClassUtils' 
00000022 SystemErr  R [[email protected]] debug not weaving 'org.apache.myfaces.orchestra.conversation.annotations.ConversationRequire' 

... 

스피어 SystemOut을 (제 3 자 클래스의 대부분이 SpringBeanELResolver을 포함하여 여기에 보이지 않는)

스피어 SystemErr : 여기

는 일부 로그 및 구성입니다

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 그것이 AspectJ를하고 CompoundClassLoader 사이에 뭔가 WEB-INF/lib 디렉토리 또는 모든 제 3의 라이브러리를로드하는 문제가있을 수 있다고 생각 ...

답변

0

모든 이후 $ {src.dir}에있는 Java 클래스 중 iajc에 소스 목록을 제공합니다. 소스 목록에는 한 줄만 있습니다.

http://resultplanet.org/