簡體   English   中英

是否可以在小門6上使用AspectJ運行小門度量?

[英]Is it possible to run wicket-metrics with aspectJ on wicket 6?

我知道,自Wicket 7.3.0以來, wicket-metrics是一個實驗版本,但是我正在基於Wicket 6.17.0進行項目。 有沒有人嘗試通過Wicket 6運行wicket-metrics模塊?

我試過的

  • 克隆了wicket git repo- https://github.com/apache/wicket ,並將wicket-metrics模塊添加到我的項目中,指示pom.xml使用我項目中的依賴項。
  • aop.xml添加到我的META-INF文件夾中,並在init()方法中啟動JmxReporter。

但是我收到錯誤消息,要求無法注冊WicketFilterInitAspect (它包含在我的aop.xml文件中)。

META-INF文件夾中的aop.xml文件:

<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
    <!--<weaver options="-nowarn">-->
        <!--<include within="org.apache.wicket..*"/>-->
    <!--</weaver>-->
    <aspects>
        <!-- required -->
        <aspect name="org.apache.wicket.metrics.aspects.WicketFilterInitAspect" />
        <!-- optional -->
        <aspect name="org.apache.wicket.metrics.aspects.model.LoadableDetachableModelLoadAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.requesthandler.IRequestHandlerDetachAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.requesthandler.IRequestHandlerRespondAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.resource.IResourceCreateAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.behavior.BehaviorCreateAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.component.ComponentCreateAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.component.ComponentOnConfigureAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.component.ComponentOnDetachAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.component.ComponentOnInitializeAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.component.ComponentOnRenderAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.component.ComponentSetResponsePageAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.ajax.IPartialPageRequestHandlerAddAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.ajax.IPartialPageRequestHandlerAppendJavaScriptAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.ajax.IPartialPageRequestHandlerPrependJavaScriptAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.resource.ResourceReferenceCreateAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.markup.WicketTagCreateAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.request.WicketFilterRequestCycleUrlAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.request.WicketFilterRequestCycleAspect" />
        <aspect name="org.apache.wicket.metrics.aspects.session.SessionCountListenerAspect" />
    </aspects>
</aspectj>

因此,我的感覺是這通常應該可行,我想知道是否有人成功或有想法?

我的痕跡跟蹤的一部分:

[NoCallStackClassLoader@290dbf45] info AspectJ Weaver Version 1.8.2 built on Thursday Aug 14, 2014 at 21:45:02 GMT
[NoCallStackClassLoader@290dbf45] info register classloader javax.management.remote.rmi.NoCallStackClassLoader@290dbf45
[NoCallStackClassLoader@290dbf45] info register aspect org.apache.wicket.metrics.aspects.WicketFilterInitAspect
May 26, 2016 8:23:02 PM org.aspectj.weaver.tools.Jdk14Trace error
SEVERE: register definition failed
java.lang.RuntimeException: Cannot register non aspect: org$apache$wicket$metrics$aspects$WicketFilterInitAspect , org.apache.wicket.metrics.aspects.WicketFilterInitAspect
    at org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:219)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:485)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:304)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:171)
    at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(Aj.java:339)
    at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(Aj.java:344)
    at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:318)
    at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:113)
    at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54)
    at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
    at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at javax.management.remote.rmi.NoCallStackClassLoader.findClass(NoCallStackClassLoader.java:126)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at javax.management.remote.rmi.RMIConnector$1.run(RMIConnector.java:2157)
    at javax.management.remote.rmi.RMIConnector$1.run(RMIConnector.java:2144)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.management.remote.rmi.RMIConnector.<clinit>(RMIConnector.java:2178)
    at javax.management.remote.rmi.RMIConnectorServer.objectToBind(RMIConnectorServer.java:752)
    at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:408)
    at sun.management.jmxremote.ConnectorBootstrap.exportMBeanServer(ConnectorBootstrap.java:768)
    at sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:456)
    at sun.management.Agent.startAgent(Agent.java:257)
    at sun.management.Agent.startAgent(Agent.java:447)

我也得到一些與spring框架有關的錯誤:

[AppClassLoader@14dad5dc] error can't determine superclass of missing type javax.cache.annotation.CacheResult
when weaving type org.springframework.cache.jcache.interceptor.AnnotationJCacheOperationSource
when weaving classes 
when weaving 
 [Xlint:cantFindType]
[AppClassLoader@14dad5dc] error can't determine superclass of missing type javax.cache.annotation.CacheResult
when weaving type org.springframework.cache.jcache.interceptor.AnnotationJCacheOperationSource
when weaving classes 
when weaving 
 [Xlint:cantFindType]
[AppClassLoader@14dad5dc] error can't determine whether missing type javax.cache.annotation.CacheResult is an instance of org.apache.wicket.Component
when weaving type org.springframework.cache.jcache.interceptor.AnnotationJCacheOperationSource
when weaving classes 
when weaving 
 [Xlint:cantFindType]
[AppClassLoader@14dad5dc] error can't determine superclass of missing type javax.cache.annotation.CacheResult
when weaving type org.springframework.cache.jcache.interceptor.AnnotationJCacheOperationSource
when weaving classes 
when weaving 

嘗試使用外部aop.xml文件時,請參見AspectJ:ClassLoading問題

它看起來相關。

抱歉,我對此無能為力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM