No Session found for current thread

hcjlovejay 2014-02-09 10:06:57
在spring3.1整合hibernate4的时候出现No Session found for current thread,求大神看看是什么原因?
HTTP Status 500 - No Session found for current thread

type Exception report

message No Session found for current thread

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.hibernate.HibernateException: No Session found for current thread
org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:97)
org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1024)
com.hrmsys.dao.impl.BaseDaoImpl.getSession(BaseDaoImpl.java:20)
com.hrmsys.dao.impl.BaseDaoImpl.findByProperty(BaseDaoImpl.java:117)
com.hrmsys.dao.impl.UserDaoImpl.findByUsernameAndPassword(UserDaoImpl.java:16)
com.hrmsys.service.impl.UserServiceImpl.validateUser(UserServiceImpl.java:24)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
$Proxy15.validateUser(Unknown Source)
com.hrmsys.action.UserAction.login(UserAction.java:30)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)

这是applicationContext.xml里的sessionFactory里的代码
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<!-- <prop key="hibernate.hbm2ddl.auto">update</prop> -->
<prop key="hibernate.jdbc.use_scrollable_resultset">false</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext
</prop>
</props>
</property>
<property name="packagesToScan" value="com.hrmsys.entity" />
</bean>
...全文
275 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveunittesting 2014-02-11
  • 打赏
  • 举报
回复
引用 12 楼 hcjlovejay 的回复:
[quote=引用 11 楼 yys79 的回复:] [quote=引用 7 楼 hcjlovejay 的回复:] [quote=引用 5 楼 yys79 的回复:] 这是没有事务的表现,因为调用的是SessionFactory.getCurrentSession()。不过楼主还在用spring啊,勇气可嘉
我设置了一个过滤器,这个会有影响吗?[/quote] 不会影响,不过劝你还是别用spring了,事务管理问题严重,这么多版本了,还是没有解决,我吃过亏的,还是用标准的东西吧。[/quote] 不用spring用什么?[/quote] CDI,EJB,至于控制层,struts2倒是能用。
hcjlovejay 2014-02-11
  • 打赏
  • 举报
回复
引用 11 楼 yys79 的回复:
[quote=引用 7 楼 hcjlovejay 的回复:] [quote=引用 5 楼 yys79 的回复:] 这是没有事务的表现,因为调用的是SessionFactory.getCurrentSession()。不过楼主还在用spring啊,勇气可嘉
我设置了一个过滤器,这个会有影响吗?[/quote] 不会影响,不过劝你还是别用spring了,事务管理问题严重,这么多版本了,还是没有解决,我吃过亏的,还是用标准的东西吧。[/quote] 不用spring用什么?
loveunittesting 2014-02-11
  • 打赏
  • 举报
回复
引用 7 楼 hcjlovejay 的回复:
[quote=引用 5 楼 yys79 的回复:] 这是没有事务的表现,因为调用的是SessionFactory.getCurrentSession()。不过楼主还在用spring啊,勇气可嘉
我设置了一个过滤器,这个会有影响吗?[/quote] 不会影响,不过劝你还是别用spring了,事务管理问题严重,这么多版本了,还是没有解决,我吃过亏的,还是用标准的东西吧。
whos2002110 2014-02-11
  • 打赏
  • 举报
回复
service层调用validateUser, 这个方法没有被切入事务
whos2002110 2014-02-10
  • 打赏
  • 举报
回复
AOP配置了没有,贴出来看看
xb12369 2014-02-10
  • 打赏
  • 举报
回复
又是个一对多,多对一的错误!!!!!!!!!!!!! 先解决报错:处理你的数据,你可能有主表,外键表,查一下里面的数据,可能外键表里有而主键表里没有!把没有主键的外键数据干掉! 页面上在做逻辑删除,如果绑定了外键,主键不能删除!
hcjlovejay 2014-02-10
  • 打赏
  • 举报
回复
这是applicationContext.xml的全部代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
        http://www.springframework.org/schema/context   
        http://www.springframework.org/schema/context/spring-context-3.1.xsd  
       http://www.springframework.org/schema/tx   
       http://www.springframework.org/schema/tx/spring-tx-3.1.xsd  
       http://www.springframework.org/schema/aop   
       http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
      ">

	<!-- 导入数据配置 -->
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<value>classpath:jdbc.properties</value>
		</property>
	</bean>
	<!-- ****************************************数据源*************************************************************** -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<!-- 指定连接数据库的驱动 -->
		<property name="driverClass" value="${jdbc.driverClass}" />
		<!-- 指定连接数据库的URL -->
		<!-- &zeroDateTimeBehavior=convertToNull是为了避免因数据库中为date类型的数据为0000-00-00, 
			若为此值hibernate会报错‘Cannot convert value '0000-00-00 00:00:00' from column 1 
			to TIMESTAMP’ -->
		<property name="jdbcUrl" value="${jdbc.jdbcUrl}" />
		<!-- 指定连接数据库的用户名 -->
		<property name="user" value="${jdbc.username}" />
		<!-- 指定连接数据库的密码 -->
		<property name="password" value="${jdbc.password}" />
		<!-- 指定连接数据库连接池的最大连接数 -->
		<property name="maxPoolSize" value="${jdbc.maxPoolSize}" />
		<!-- 指定连接数据库连接池的最小连接数 -->
		<property name="minPoolSize" value="${jdbc.minPoolSize}" />
		<!-- 指定连接数据库连接池的初始化连接数 -->
		<property name="initialPoolSize" value="${jdbc.initialPoolSize}" />
		<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
		<property name="maxIdleTime" value="${jdbc.maxIdleTime}" />
		<!-- 指定隔多少秒检查所有连接池中的空闲连接,默认为0表示不检查 -->
		<property name="idleConnectionTestPeriod" value="18000" />
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<!-- <prop key="hibernate.hbm2ddl.auto">update</prop> -->
				<prop key="hibernate.jdbc.use_scrollable_resultset">false</prop>
				<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">false</prop>
				<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext
				</prop>
			</props>
		</property>
		<property name="packagesToScan" value="com.hrmsys.entity" />
	</bean>

	<!-- 配置事务 begin -->
	<bean id="txManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="update*" propagation="REQUIRED" read-only="false" />
			<tx:method name="delete*" propagation="REQUIRED" read-only="false" />
			<tx:method name="save*" propagation="REQUIRED" read-only="false" />
			<tx:method name="find*" propagation="REQUIRED" read-only="false" />
			<tx:method name="get*" propagation="REQUIRED" read-only="false" />
			<tx:method name="*" propagation="SUPPORTS" read-only="true" />
		</tx:attributes>
	</tx:advice>

	<aop:config>
		<aop:pointcut id="ServiceMethods"
			expression="execution(* com.hrmsys.service.impl..*.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="ServiceMethods" />
	</aop:config>
	<!-- 配置事务 end -->

	<!-- 引入其它文件 -->
	<import resource="applicationContext-dao.xml" />
	<import resource="applicationContext-service.xml" />
	<import resource="applicationContext-action.xml" />
</beans>
hcjlovejay 2014-02-10
  • 打赏
  • 举报
回复
引用 8 楼 mengjunquan 的回复:
楼主兄弟,这里的hibernate.current_session_context_class 应该没加载成功
那应该怎么修改?
简易人 2014-02-10
  • 打赏
  • 举报
回复
楼主兄弟,这里的hibernate.current_session_context_class 应该没加载成功
hcjlovejay 2014-02-10
  • 打赏
  • 举报
回复
引用 5 楼 yys79 的回复:
这是没有事务的表现,因为调用的是SessionFactory.getCurrentSession()。不过楼主还在用spring啊,勇气可嘉
我设置了一个过滤器,这个会有影响吗?
hcjlovejay 2014-02-10
  • 打赏
  • 举报
回复
引用 4 楼 whos2002110 的回复:
AOP配置了没有,贴出来看看
	<aop:config>
		<aop:pointcut id="ServiceMethods"
			expression="execution(* com.hrmsys.service.impl..*.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="ServiceMethods" />
	</aop:config>
loveunittesting 2014-02-10
  • 打赏
  • 举报
回复
这是没有事务的表现,因为调用的是SessionFactory.getCurrentSession()。不过楼主还在用spring啊,勇气可嘉

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧