Perf4j on Websphere 7?



我正试图将EAR部署到我们的Websphere应用程序服务器版本7(恰好是7.0.0.17)。以前的版本工作得很好,我只是想用Perf4j在我们的日志中添加一些分析细节。

安装失败,日志中有以下异常:

com.ibm.ws.exception.RuntimeWarning: java.lang.TypeNotPresentException: Type org.perf4j.log4j.aop.EjbTimingAspect not present
    at com.ibm.ws.metadata.ejb.EJBMDOrchestrator.processBean(EJBMDOrchestrator.java:1357)
    at com.ibm.ws.runtime.component.EJBContainerImpl.startModule(EJBContainerImpl.java:2618)
    at com.ibm.ws.runtime.component.EJBContainerImpl.start(EJBContainerImpl.java:3826)
    [....snip...snip...]
Caused by: java.lang.TypeNotPresentException: Type org.perf4j.log4j.aop.EjbTimingAspect not present
    at com.ibm.oti.reflect.AnnotationHelper$AnnotationInvocationHandler.invoke(AnnotationHelper.java:131)
    at $Proxy27.value(Unknown Source)
    at com.ibm.ws.metadata.ejb.InterceptorMetaDataFactory.addMethodLevelInterceptors(InterceptorMetaDataFactory.java:1263)
    at com.ibm.ws.metadata.ejb.InterceptorMetaDataFactory.updateEJBMethodInfoInterceptorProxies(InterceptorMetaDataFactory.java:1384)
    at com.ibm.ws.metadata.ejb.InterceptorMetaDataFactory.createInterceptorMetaData(InterceptorMetaDataFactory.java:410)
    at com.ibm.ws.metadata.ejb.EJBMDOrchestrator.initializeInterceptorMD(EJBMDOrchestrator.java:6924)
    at com.ibm.ws.metadata.ejb.EJBMDOrchestrator.finishBMDInit(EJBMDOrchestrator.java:1761)
    at com.ibm.ws.metadata.ejb.EJBMDOrchestrator.processBean(EJBMDOrchestrator.java:1346)
    ... 48 more
Caused by: java.lang.ClassNotFoundException: org.perf4j.log4j.aop.EjbTimingAspect
    at com.ibm.oti.reflect.AnnotationHelper.getReturnValueForEntry(Native Method)
    at com.ibm.oti.reflect.AnnotationHelper.access$000(AnnotationHelper.java:16)
    at com.ibm.oti.reflect.AnnotationHelper$AnnotationInvocationHandler.invoke(AnnotationHelper.java:129)
    ... 55 more

org.perf4j.log4j.aop.EjbTimingAspect类为Perf4j罐的一部分,加入EAR(核对确认)

当然,与Websphere一样,我怀疑是类加载问题(我们的应用程序使用parent first,并且更改它不是一个选项,因为它在过去引起了几个问题),但是在论坛或Google上找不到任何内容。

有谁知道可能是什么问题吗?没有人吗?拜托,我相信我不是唯一一个有这个问题的人!

好了,终于找到答案了。看起来在EJB层POM上添加依赖关系是不够的,它们还需要在内部应用程序(WAR文件)中,尽管我只在EJB层中使用类…

好吧,又是Websphere内部魔法

最新更新