2013-02-21 2 views
5

우리는 JBOSS AS7을 사용하여 Java 1.6에서 프로젝트를 개발하고 있으며 우리는 Aspectj와 HornetQ를 사용합니다. ASpectj 1.7.1을 사용할 수 있도록 Java 1.7로 업그레이드해야합니다.Spring 3.2.1, Jboss AS7, Aspectj 1.7.1을 사용하여 jms 연결 팩토리에 대해 구현 된 인터페이스를 결정하는 방법 java 1.7?

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

:

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] 

가 MBean은 다음과 같습니다 : 배포 동안 우리는 다음과 같은 예외가 얻을 우리는 JPA 데이터 소스를 사용하는 경우 다른 프로젝트에

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

을, 우리는 같은 예외를했다 jboss-deployment-structure에 모듈 depedency를 추가하여이 문제를 해결할 수 있습니다 : 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> 

이 예외를 전달하기 위해 추가 할 수있는 모듈이 있습니까? 또는 다른 방법으로이 문제를 해결할 수 있습니까?

+1

HornetQ가 귀하의 문제와 관련이있는 부분을 파악하는 것이 어렵습니다. 그것은 나를위한 순수한 스프링 구성 문제로 보인다. –

+0

사실입니다! 그것은 측면 문제 였어! 시간 내 줘서 고마워! –

답변

7

나는 해결책을 당신과 나누고 싶습니다. 모듈을 추가하십시오 : org.hornetq, org.hornetq.ra, org.jboss.ejb3, org.jboss.ejb-client.

<jboss-deployment-structure> 
    <deployment> 
     <!-- Exclusions allow you to prevent the server from automatically adding 
      some dependencies --> 
     <exclusions> 
      <module name="org.slf4j" /> 
      <module name="org.slf4j.impl" /> 
      <module name="org.apache.log4j" /> 
     </exclusions> 
     <dependencies> 
      <module name="org.jboss.ironjacamar.jdbcadapters" /> 
      <module name="org.hornetq" /> 
      <module name="org.hornetq.ra" /> 
      <module name="org.jboss.ejb3" /> 
      <module name="org.jboss.ejb-client" /> 
     </dependencies> 
    </deployment> 
</jboss-deployment-structure> 
1

이 질문에 늦더라도 나에게 맞는 것을 문서화하고 싶습니다.

내가 보스 7.1.1 그리고 봄 3.2.4 사용하고 있습니다 : 가로 세로 - 버가 당신이 모든 이상의 구성 요소를 이동하려고

의 원인이됩니다 귀하의 봄 설정에서, 말, 주석 기반의 측면을 사용하여, JNDI 조회를 통해 얻은 정보도 포함됩니다. 위버는 이러한 컴포넌트들을 넘어서게 될 것입니다. (어딘가에서 읽습니다.) 클래스 로더가로드하는 데 사용 되었기 때문에 (내 JBoss의 ModuleClassLoader) 나의 aspect (내 프로젝트의 클래스 로더에 존재)에 대해 아무것도 알지 못하고 Xlint:cantFindType으로 실패합니다.

프로젝트의 Classloader 영역 내에서 이러한 구성 요소를 프록 싱하면이 문제가 해결됩니다. JDBC 데이터 소스에 대한

:

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

그리고 JMS ConnectionFactory를

하십시오.

이렇게하면 org.jboss.ironjacamar.jdbcadapters 등과 같은 추가 모듈을 포함 할 필요가 없습니다.