2013-02-21 45 views
5

हम जावा 1.6 में जेबीएसएस एएस 7 का उपयोग करके एक परियोजना विकसित कर रहे हैं और हम दूसरों के बीच उपयोग करते हैं: Aspectj और HornetQ। हमें जावा 1.7 में अपग्रेड करने की आवश्यकता है ताकि हम ASpectj 1.7.1 का उपयोग कर सकें।वसंत 3.2.1, जेबॉस एएस 7, Aspectj 1.7.1 जावा 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] 

MBean है: तैनाती के दौरान हम निम्न अपवाद प्राप्त

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

:

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

अन्य परियोजना पर, हम एक ही अपवाद है जब हम एक जेपीए डेटा स्रोत का उपयोग किया था और हम जेबॉस-तैनाती-संरचना को मॉड्यूल डिप्लेेंसी पर जोड़कर इस मुद्दे को हल करने का प्रबंधन करते हैं: 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

मेरे लिए यह पता लगाना मुश्किल है कि हॉर्नेटक आपके मुद्दे में कहां शामिल है। यह मेरे लिए एक शुद्ध वसंत विन्यास मुद्दा लगता है। –

+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

मैं दस्तावेज करना चाहता हूं कि मेरे लिए क्या काम करता है, भले ही मैं इस प्रश्न के देर से हूं।

मैं JBoss 7.1.1 और स्प्रिंग 3.2.4 का उपयोग कर रहा:

का उपयोग करते हुए अपने स्प्रिंग सेटअप में, कहते हैं, एनोटेशन आधारित पहलुओं का कारण होगा पहलू-वीवर सभी से अधिक घटकों आपके पास जाने की कोशिश, जिसमें आपको जेएनडीआई-लुकअप के माध्यम से मिला है। वीवर उन घटकों पर ठोकर खाएगा, क्योंकि (मैंने इसे कहीं पढ़ा है) क्लासलोडर उन्हें लोड करने के लिए प्रयुक्त होता है (मेरे मामले में जेबॉस 'मॉड्यूल क्लासलोडर) मेरे पहलू (मेरे प्रोजेक्ट के क्लासलोडर में रहना) के बारे में कुछ भी नहीं जानता और Xlint:cantFindType के साथ असफल हो जाएगा।

प्रोजेक्ट के क्लासलोडर के दायरे में कुछ घटकों द्वारा उन घटकों को प्रॉक्सी करना इस समस्या को हल करता है।

JDBC datasources के लिए:

JMS ConnectionFactory

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

और इतने पर।

इस तरह मुझे org.jboss.ironjacamar.jdbcadapters और ऐसे कोई अतिरिक्त मॉड्यूल शामिल करने की आवश्यकता नहीं है।