Java 在OSGi包中使用Spring AOP
我试图使用Java 在OSGi包中使用Spring AOP,java,maven,osgi,spring-aop,apache-karaf,Java,Maven,Osgi,Spring Aop,Apache Karaf,我试图使用springaop进行日志记录。我已经设置了日志包和其中的OSGi服务 我还有另一个OSGi包,它将日志包中的服务用作OSGi参考 日志包部署到ApacheKaraf中并运行。我无法部署我的另一个包 我的捆绑包中的spring配置如下所示: <osgi:reference id="loggingIterceptor" interface="com.groupgti.commons.log.LoggingInterceptorAdvice"/> <aop:config&
springaop
进行日志记录。我已经设置了日志包和其中的OSGi
服务
我还有另一个OSGi
包,它将日志包中的服务用作OSGi
参考
日志包部署到ApacheKaraf中并运行。我无法部署我的另一个包
我的捆绑包中的spring配置如下所示:
<osgi:reference id="loggingIterceptor" interface="com.groupgti.commons.log.LoggingInterceptorAdvice"/>
<aop:config>
<aop:pointcut id="logger" expression="@annotation(com.groupgti.esb.assessments.kenexa.log.InOutLogger)"/>
<aop:advisor pointcut-ref="logger" advice-ref="loggingIterceptor"/>
</aop:config>
我已将maven依赖项添加到我的pom.xml
:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.2</version>
</dependency>
org.aspectj
aspectjweaver
1.6.2
还是解决不了问题。这里我遗漏了什么?问题是您正在导入的Maven依赖项没有正确的OSGI清单。清单中缺少与所有其他OSGI标记相邻的导出包标记 因此,org.aspectj.weaver.reflect包不会导出,在OSGI中,这意味着该包中的类对于其他bundle来说是未知的。 因此出现了ClassNotFoundException 要解决您的问题,请使用以下内容替换依赖项:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>com.springsource.org.aspectj.weaver</artifactId>
<version>1.6.2.RELEASE</version>
</dependency>
org.aspectj
com.springsource.org.aspectj.weaver
1.6.2.1发布
springsource JAR基本上是官方版本的重新打包,但是有一个适当的osgi清单
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>com.springsource.org.aspectj.weaver</artifactId>
<version>1.6.2.RELEASE</version>
</dependency>