javoconfig를 배우고 있습니다. 최근 xConfig를 javaConfig로 전송하려고했으나 코드는 Tomcat에서 실행되는 동안 프로젝트에서 오류가 발생했습니다. 세션을 가져 와서 db.I에서 정보를 얻으려고하면 정말 혼란 스럽습니다.Spring-Hibernate3에서 javaConfig를 사용하려고하면 session.but을 예외로 사용할 수 없습니다.
블로그를 읽고 인터넷에서 가능한 이유를 검색 한 후 트랜잭션이 제대로 작동하지 않는 것으로 보이는 설명이 있습니다. (하지만 오류는 트랜잭션이 잘 작동 함을 보여줍니다.)
올바른 가정이 있다면 어떻게하면 코드를 수정할 수 있습니까? 그렇지 않으면 무엇이 내 문제입니까?
조언이 도움이 될 수 있습니다.
(불쌍한 내 영어 죄송합니다, 난 훨씬 당신을 귀찮게하지 바랍니다.)여기 내 자바 설정 코드입니다.
이 클래스는 RootApplicationContext
@Configuration
@EnableAspectJAutoProxy
@EnableTransactionManagement
@ComponentScan(basePackages = { "com.*" })
@PropertySources({ @PropertySource(value = "classpath:database.properties"),
@PropertySource(value = "classpath:hibernate.properties") })
@Import(value = { HibernateConfig.class, DruidConfig.class, TransactionConfig.class })
public class SpringContextConfig {
}
에 대한 writen되는이이 나는 클래스 상에 @Transactionl 넣어 가지고, 서비스를 관리 할 필요가있다
@EnableTransactionManagement
public class TransactionConfig implements TransactionManagementConfigurer {
@Resource
SessionFactory sessionFactory;
@Resource
DataSource dataSource;
@Bean(name = "transactionManager")
public HibernateTransactionManager hibernateTransactionManager() {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setDataSource(dataSource);
txManager.setSessionFactory(sessionFactory);
return txManager;
}
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return hibernateTransactionManager();
}
}
거래 javaConfig입니다
@Service("locationService")
@Transactional(value="transactionManager")
public class LocationServiceImpl implements LocationService {
@Resource
SessionFactory sessionFactory;
@Resource(name = "locationDaoImp")
LocationDao dao;
@Override
public Location queryLocationById(String locationId) {
return dao.queryLocationById(locationId);
}
오류가 발생하면 daoClass에서 디버깅하려고 시도했지만 (항상) 등 오류가 난 메소드 getCurrentSession()
Location location = (Location) sessionFactory.getCurrentSession().get(Location.class, locationId);
를 사용할 때 나는 내 프로젝트에 스프링 orm.jar을 추가하려고 후에이,
Exception in thread "pool-1-thread-1" java.lang.NoClassDefFoundError: org/springframework/orm/ObjectRetrievalFailureException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2957)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:539)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:420)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:257)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy29.queryLocationById(Unknown Source)
at com.test.controller.LocationController$1.execute(LocationController.java:83)
at com.test.service.ExecuteTaskService$1.run(ExecuteTaskService.java:22)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)