2013-02-21 17 views
5

Wir entwickeln ein Projekt in Java 1.6 mit JBOSS AS7 und wir verwenden unter anderem: Aspectj und HornetQ. Wir müssen auf Java 1.7 upgraden, also verwenden wir ASpectj 1.7.1. Während des Einsatzes wir die folgende Ausnahme erhalten:Wie ermittelt man implementierte Schnittstellen für jms Connection Factories mit Spring 3.2.1, Jboss AS7, Aspectj 1.7.1 Java 1.7?

Caused by: org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'eventsJmsTemplate' defined in class path resource [com/company/project/jms/jms.xml]: 
    Cannot resolve reference to bean 'jmsConnectionFactory' while setting bean property 'connectionFactory'; nested exception is 
    org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'jmsConnectionFactory': 
    Post-processing of the FactoryBean's object failed; 
    nestedexception is java.lang.IllegalArgumentException: 
     warning can't determine implemented interfaces of missing type 
    com.company.project.aspects.MBeanAttributesAdvice [Xlint:cantFindType] 

Die mbean ist:

<jee:jndi-lookup id="jmsConnectionFactory" jndi-name="java:/JmsXA" /> 

Auf anderen Projekt hatten wir die gleiche Ausnahme, wenn wir eine JPA-Datenquelle verwenden:

<jee:jndi-lookup id="dataSource" jndi-name="java:jboss/datasources/table" /> 
<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> 

und wir schaffen es, das Problem zu lösen, indem wir auf jboss-deployment-structure das Modul dependency hinzufügen: org.jboss.ironjacamar.jdbcadapters

<jboss-deployment-structure> 
    <deployment> 
     <exclusions> 
      <module name="org.slf4j" /> 
      <module name="org.slf4j.impl" /> 
      <module name="org.apache.log4j" /> 
     </exclusions> 
     <dependencies> 
      <module name="org.jboss.ironjacamar.jdbcadapters" /> 
     </dependencies> 
    </deployment> 
</jboss-deployment-structure> 

Gibt es ein Modul, das wir hinzufügen können, um diese Ausnahme zu bestehen? oder eine andere Möglichkeit, dieses Problem zu lösen?

+1

Es ist schwer für mich zu identifizieren, wo HornetQ in Ihrem Problem beteiligt ist. es scheint ein reines Frühlingskonfigurationsproblem für mich zu sein. –

+0

Das ist wahr! Es war Aspekte Problem! Vielen Dank für Ihre Zeit! –

Antwort

7

Ich möchte mit Ihnen die Lösung teilen. Fügen Sie die Module hinzu: org.hornetq, org.hornetq.ra, org.jboss.ejb3, org.jboss.ejb-client.

1

Ich möchte dokumentieren, was für mich funktioniert, auch wenn ich zu spät zu dieser Frage bin.

Ich verwende JBoss 7.1.1 und Spring 3.2.4:

Mit etwa Annotation basiert Aspekte in Ihrem Frühlings-Setup wird die Aspect-Weaver versuchen verursachen gehen über alle Komponenten, die Sie haben, einschließlich derjenigen, die Sie über JNDI-Lookup erhalten haben. Der Weaver wird über diese Komponenten stolpern, da der Classloader, der sie lädt (JBoss 'ModuleClassLoader in meinem Fall), nichts über meinen Aspect (lebt in meinem Klassenlader) weiß und mit Xlint:cantFindType fehlschlägt.

Die Proxylierung dieser Komponenten durch etwas im Bereich des Classloaders des Projekts löst dieses Problem.

Für JDBC-Datenquellen:

Für JMS Connection

<jee:jndi-lookup id="connectionFactory" jndi-name="java:/JmsXA" proxy-interface="javax.jms.ConnectionFactory"/> 

Und so weiter.

So muss ich keine zusätzlichen Module wie org.jboss.ironjacamar.jdbcadapters und so.