2014-11-12 3 views
1

Я пытаюсь понять, как использовать Spring DataSourceTransactionManager.Как настроить Spring для использования TransactionManager

Я стараюсь следовать этому example. Но, когда я начинаю Tomcat с Eclipse, я получаю эту ошибку:

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
    at java.lang.Class.getDeclaredMethods(Unknown Source) 
    at org.springframework.core.type.StandardAnnotationMetadata.hasAnnotatedMethods(StandardAnnotationMetadata.java:159) 
    at org.springframework.context.annotation.ConfigurationClassUtils.isLiteConfigurationCandidate(ConfigurationClassUtils.java:106) 
    at org.springframework.context.annotation.ConfigurationClassUtils.checkConfigurationClassCandidate(ConfigurationClassUtils.java:87) 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:257) 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:227) 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:623) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:388) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:293) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 23 more 

Это соответствующий код DispatcherServlet.xml

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
      <property name="dataSource" ref="dataSource"/> 
     </bean>  

     <tx:advice id="txAdvice" transaction-manager="transactionManager"> 
      <tx:attributes> 
       <tx:method name="create" /> 
      </tx:attributes> 
     </tx:advice> 

     <aop:config> 
      <aop:pointcut id="userDaoTxPointcut" expression="execution(* com.springgestioneerrori.DAO.UtenteDAO.salvaUtente(..))" /> 
      <aop:advisor advice-ref="txAdvice" pointcut-ref="userDaoTxPointcut" /> 
     </aop:config> 

salvaUtente() является метод, где я буду работать с несколькими inserts (теперь все еще действует).

+0

Если помечается 'конфигурации ТХ @ Transactional' то почему на земле, вы XML на основе? Удалите команды 'tx: advice' и' aop: config' и вместо этого добавьте 'tx: annotation-driven'. Ошибка связана с отсутствием зависимости от вашего пути к классам (возможно, aspectjrt.jar или aspectjweaver.jar) –

+0

Извините, я редактировал другое сообщение, и я забыл удалить это предложение, на самом деле у меня нет комментариев. Во всяком случае, я добавил aspectj-1.6.9 в мой путь к классам и получаю ту же ошибку. – MDP

ответ

4

Кувшин отсутствует в вашем пути к классам:

<dependency>  
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjweaver</artifactId> 
    <version>${aspectjweaver.version}</version>  
</dependency> 
+0

Я добавил aspectj-1.6.9 в мой путь к классам, и я получаю ту же ошибку – MDP

+0

@MatteoDepasquali Вам нужен aspectj ** weaver **. См. Http://stackoverflow.com/q/11446893/1225328. – sp00m

+0

Спасибо, человек, это то, что я пропустил! – MDP

Смежные вопросы