Все,
У меня изначально была такая установка, и все работало как положено.
WEB-INF
|--spring-servlet.xml
|--classes
|--hibernate-cfg.xml
spring-servlet.xml имел
<context:component-scan base-package="foo" />
<tx:annotation-driven/>
<bean id="dataSource" ...
<bean id="sessionFactory" ...
<bean id="transactionManager" ...
<bean ...
hibernate-cfg.xml имел
<hibernate-configuration>
<session-factory>
<mapping ...
Я хотел добавить Spring Security в смесь для обработки аутентификации пользователей.Чтобы это сработало, мне пришлось кое-что сделать.Моя новая установка выглядит следующим образом:
WEB-INF
|--spring-servlet.xml
|--classes
|--datasource-cfg.xml
|--hibernate-cfg.xml
spring-servlet.xml имеет
<context:component-scan base-package="foo" />
<bean ...
datasource-cfg.xml имеет
<tx:annotation-driven/>
<bean id="dataSource" ...
<bean id="sessionFactory" ...
<bean id="transactionManager" ...
hibernate-cfg.xml имеет
<hibernate-configuration>
<session-factory>
<mapping ...
Элемент аутентификации теперь работает, но ранее работающие части больше не работают.
Теперь я получаю следующее сообщение:
No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
at org.springframework.orm.hibernate3.SpringSessionContext.currentSession(SpringSessionContext.java:63)
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:687)
Как мне заставить мое приложение работать с Spring Security и иметь все источники данных / гибернацию в одном месте?