2013-07-31 3 views
1

프로젝트를 Spring 3.0.3에서 Spring 3.2.3으로 업그레이드하려고합니다. 나는 현재 activemq 의존성에 관한 문제에 봉착 해 있으며, 내가 필요한 병이 무엇인지 알아 내지 못한다. 다음은 Spring 3.2.3 : activemq 5.5 종속성 문제

org.unitils.core.UnitilsException: Unable to create application context for locations [classpath:producerServiceContext-test.xml] at org.unitils.spring.util.ApplicationContextManager.createInstanceForValues(ApplicationContextManager.java:121) at org.unitils.spring.util.ApplicationContextManager.createInstanceForValues(ApplicationContextManager.java:36) at org.unitils.core.util.AnnotatedInstanceManager.getInstanceImpl(AnnotatedInstanceManager.java:234) at org.unitils.core.util.AnnotatedInstanceManager.getInstance(AnnotatedInstanceManager.java:121) at org.unitils.spring.util.ApplicationContextManager.getApplicationContext(ApplicationContextManager.java:65) at org.unitils.spring.SpringModule.getApplicationContext(SpringModule.java:235) at org.unitils.spring.SpringModule$1.isApplicableFor(SpringModule.java:108) at org.unitils.database.transaction.impl.DefaultUnitilsTransactionManager.getTransactionManagementConfiguration(DefaultUnitilsTransactionManager.java:180) at org.unitils.database.transaction.impl.DefaultUnitilsTransactionManager.startTransaction(DefaultUnitilsTransactionManager.java:96) at org.unitils.database.DatabaseModule.startTransaction(DatabaseModule.java:410) at org.unitils.database.DatabaseModule.startTransactionForTestMethod(DatabaseModule.java:381) at org.unitils.database.DatabaseModule$DatabaseTestListener.beforeTestSetUp(DatabaseModule.java:535) at org.unitils.core.Unitils$UnitilsTestListener.beforeTestSetUp(Unitils.java:273) at org.unitils.UnitilsJUnit4TestClassRunner$TestListenerInvokingMethodRoadie.runBeforesThenTestThenAfters(UnitilsJUnit4TestClassRunner.java:151) at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84) at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) at org.unitils.UnitilsJUnit4TestClassRunner.invokeTestMethod(UnitilsJUnit4TestClassRunner.java:95) at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:61) at org.unitils.UnitilsJUnit4TestClassRunner.access$000(UnitilsJUnit4TestClassRunner.java:44) at org.unitils.UnitilsJUnit4TestClassRunner$1.run(UnitilsJUnit4TestClassRunner.java:62) at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34) at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44) at org.unitils.UnitilsJUnit4TestClassRunner.run(UnitilsJUnit4TestClassRunner.java:68) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.activemq.xbean.XBeanBrokerService#0' defined in class path resource [producerServiceContext-test.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchFieldError: NULL at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) at org.unitils.spring.util.ApplicationContextManager.createInstanceForValues(ApplicationContextManager.java:117) ... 28 more Caused by: java.lang.NoSuchFieldError: NULL at org.springframework.expression.TypedValue.(TypedValue.java:32) at org.springframework.expression.spel.support.StandardEvaluationContext.setRootObject(StandardEvaluationContext.java:88) at org.springframework.expression.spel.support.StandardEvaluationContext.(StandardEvaluationContext.java:74) at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:124) at org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1312) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.evaluate(BeanDefinitionValueResolver.java:225) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:201) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1387) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1128) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) ... 37 more

다음

는 또한 내가 봄 3.2.3의 배포 번들을 사용하고 내 ActiveMQ를 치어 종속
<dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-core</artifactId> 
     <version>5.5.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-pool</artifactId> 
     <version>5.5.0</version> 
    </dependency> 

있습니다 내 스택 트레이스입니다. 나는 여기에 복사를 피하는 것을 좋아한다. 왜냐하면 그것은 꽤 의존성이 있기 때문에, 나는 간결하고 간결하게 유지한다.

이 사람이 내가 어떤 피드백을 정말 감사하겠습니다 같은 통합 문제를 통해 제공된 경우

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> 

    <!-- lets create an embedded ActiveMQ Broker --> 
    <amq:broker useJmx="false" persistent="false"> 
     <amq:transportConnectors> 
      <amq:transportConnector uri="tcp://localhost:0" /> 
     </amq:transportConnectors> 
    </amq:broker> 

    <!-- ActiveMQ destinations to use --> 
    <amq:queue id="destination" physicalName="org.apache.activemq.spring.Test.spring.embedded" /> 

    <!-- JMS ConnectionFactory to use, configuring the embedded broker using XML --> 
    <amq:connectionFactory id="jmsFactory" brokerURL="vm://localhost?broker.persistent=false" /> 


    <!-- Spring JMS Template --> 
    <bean id="fastJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
     <property name="connectionFactory"> 
      <!-- lets wrap in a pool to avoid creating a connection per send --> 
      <bean class="org.springframework.jms.connection.SingleConnectionFactory"> 
       <property name="targetConnectionFactory"> 
        <ref local="jmsFactory" /> 
       </property> 
      </bean> 
     </property> 
    </bean> 

    <bean id="consumerJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
     <property name="connectionFactory" ref="jmsFactory" /> 
    </bean> 

    <bean id="fastJmsProducer" class="com.emakina.truvo.ssls.fast.service.util.FastJmsProducer"> 
     <property name="template"> 
      <ref bean="fastJmsTemplate"></ref> 
     </property> 

     <property name="destination"> 
      <ref bean="destination" /> 
     </property> 
    </bean> 

    <bean id="consumer" class="com.emakina.truvo.ssls.fast.service.util.SimpleFastJmsConsumer"> 
     <property name="template" ref="consumerJmsTemplate" /> 
     <property name="destination" ref="destination" /> 
    </bean> 

</beans> 

을로드 할 수 없습니다 내의 ApplicationContext이다.

답변

2

문제의 원인이되는 종속성을 발견했습니다. 스프링 보안은 여전히 ​​이전 버전을 관리합니다.

 <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-expression</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 

스프링 - 보안이 봄 - 표현 3.0.7을 가져 오는 것 같습니다. 이로 인해 activemq가 브로커를 시작하는 데 문제가 발생했습니다.이 브로커는 해당 lib의 클래스를 사용하기 때문입니다. NoSuchField 예외에 중단 점을 넣고 문제가 있음을 발견하고 중단 된 클래스와 해당 클래스가 속한 라이브러리를 확인합니다. 나는 이것이 다른 사람들에게도 도움이되기를 바랍니다.

내 경우에는 새 스프링 버전으로 종속성을 추가해야했습니다.