Could not obtain transaction-synchronized Session for current thread 錯誤記錄

今天在老項目上測試新的功能,不能在原有的業務層上繼續添加業務代碼,因此,新建了一層業務層,如下圖:
在這裏插入圖片描述
之後的代碼基本上都是按照標準的copy過來,項目啓動正常,不過在調用其他功能後,在這一段代碼中報了異常:

Session session = getSession();

異常信息如下:
在這裏插入圖片描述
查了下資料,應該是獲取session的方法不在事務管理器內,查看一下配置文件如下:

<aop:config expose-proxy="true">
		<!-- 只對業務邏輯層實施事務 -->
		<aop:pointcut id="txAuthPointcut"
			expression="execution(* com.*.services.*.*(..))" />
		<!-- Advisor定義,切入點和通知分別爲txPointcut、txAdvice -->
		<aop:advisor pointcut-ref="txAuthPointcut" advice-ref="txAdvice" />
	</aop:config>

把新建的業務層貼上去就可以了,如下:

<aop:config expose-proxy="true">
		<!-- 只對業務邏輯層實施事務 -->
		<aop:pointcut id="txAuthPointcut"
			expression="execution(* com.*.services.*.*(..))" />
		<aop:pointcut id="txTest"
			expression="execution(* com.*.service.*.*(..))" /><!-- 新方法測試-->
		<!-- Advisor定義,切入點和通知分別爲txPointcut、txAdvice -->
		<aop:advisor pointcut-ref="txAuthPointcut" advice-ref="txAdvice" />
		<aop:advisor pointcut-ref="txTest" advice-ref="txAdvice" /> <!-- 新方法測試 -->
	</aop:config>

之後再調用後就沒問題了。
以前好像遇到過這個問題,這次就做個記錄方便以後查看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章