所有
我最初的设置是这样的,一切都按预期工作。
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并将所有数据源/休眠资源放在一个地方?
答案 0 :(得分:1)
这在web.xml中应该足够了。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-security.xml
classpath:datasource-cfg.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
然而,我不会混淆配置文件的位置; IMO最好把它们放在一个地方,可能是在类路径上。