Spring, Springmodules, JBPM持久化集成--优雅的背后(Part2)
Spring, Springmodules, JBPM持久化集成理解系列二
【本系列如需转载,请注明作者及出处】?
?
?
本系列文章假设阅者具备以下知识:
1,ThreadLocal相关知识
2,Spring持久化,事务管理相关知识
3,Hibernate 持久化相关知识
4,Jbpm 持久化相关知识
5,Springmodules项目相关知识
6,相关J2EE知识
且具备以下材料:
1,Spring源代码
2,Hibernate源代码
3,Jbpm源代码
4,Springmodules源代码
?
?
第二部分,Session的关闭: 到了这里,我们就到了验证的最后一部分了,JbpmContext的关闭了。
【位置JbpmContext】
?
上述Junit?类继承的父类BaseTestCase是AbstractDependencyInjectionSpringContextTests的子类,
?启用了与OpenSessionInView一样的数据LazyLoading和JDBC Connection延迟关闭策略。
?
附件是测试这个这个流程所发生的Log,首先是SessionFactoryUtils打开了Hibernate Session,最后是SessionFactoryUtils关闭了Hibernate Session,符合Jbpm声称的Context哲学。
2008-03-04 00:14:12 DEBUG (SessionFactoryUtils.java:690) - Initializing deferred close of Hibernate Sessions2008-03-04 00:14:12 DEBUG (SessionFactoryUtils.java:316) - Opening Hibernate Session2008-03-04 00:14:12 DEBUG (TestSetUp.java:22) - findTaskInstances2008-03-04 00:14:12 DEBUG (JbpmContextInfo.java:142) - creating jbpm context with service factories '[message, scheduler, logging, persistence, authentication]'2008-03-04 00:14:12 DEBUG (JbpmContext.java:124) - creating JbpmContext2008-03-04 00:14:12 DEBUG (HibernateTemplate.java:364) - Found thread-bound Session for HibernateTemplate2008-03-04 00:14:12 DEBUG (DbPersistenceServiceFactory.java:55) - creating persistence service2008-03-04 00:14:12 DEBUG (DbPersistenceService.java:303) - injecting a session disables transactionHibernate: select taskinstan0_.ID_ as ID1_27_, taskinstan0_.NAME_ as NAME3_27_, taskinstan0_.DESCRIPTION_ as DESCRIPT4_27_, taskinstan0_.ACTORID_ as ACTORID5_27_, taskinstan0_.CREATE_ as CREATE6_27_, taskinstan0_.START_ as START7_27_, taskinstan0_.END_ as END8_27_, taskinstan0_.DUEDATE_ as DUEDATE9_27_, taskinstan0_.PRIORITY_ as PRIORITY10_27_, taskinstan0_.ISCANCELLED_ as ISCANCE11_27_, taskinstan0_.ISSUSPENDED_ as ISSUSPE12_27_, taskinstan0_.ISOPEN_ as ISOPEN13_27_, taskinstan0_.ISSIGNALLING_ as ISSIGNA14_27_, taskinstan0_.ISBLOCKING_ as ISBLOCKING15_27_, taskinstan0_.TASK_ as TASK16_27_, taskinstan0_.TOKEN_ as TOKEN17_27_, taskinstan0_.SWIMLANINSTANCE_ as SWIMLAN18_27_, taskinstan0_.TASKMGMTINSTANCE_ as TASKMGM19_27_ from JBPM_TASKINSTANCE taskinstan0_ where taskinstan0_.ACTORID_=? and taskinstan0_.ISSUSPENDED_<>1 and taskinstan0_.ISOPEN_=12008-03-04 00:14:13 DEBUG (HibernateTemplate.java:388) - Not closing pre-bound Hibernate Session after HibernateTemplate2008-03-04 00:14:13 DEBUG (JbpmContext.java:133) - closing JbpmContext2008-03-04 00:14:13 DEBUG (Services.java:210) - closing service 'persistence': org.jbpm.persistence.db.DbPersistenceService@1ce663cHibernate: select task0_.ID_ as ID1_14_0_, task0_.NAME_ as NAME2_14_0_, task0_.PROCESSDEFINITION_ as PROCESSD3_14_0_, task0_.DESCRIPTION_ as DESCRIPT4_14_0_, task0_.ISBLOCKING_ as ISBLOCKING5_14_0_, task0_.ISSIGNALLING_ as ISSIGNAL6_14_0_, task0_.DUEDATE_ as DUEDATE7_14_0_, task0_.ACTORIDEXPRESSION_ as ACTORIDE8_14_0_, task0_.POOLEDACTORSEXPRESSION_ as POOLEDAC9_14_0_, task0_.TASKMGMTDEFINITION_ as TASKMGM10_14_0_, task0_.TASKNODE_ as TASKNODE11_14_0_, task0_.STARTSTATE_ as STARTSTATE12_14_0_, task0_.ASSIGNMENTDELEGATION_ as ASSIGNM13_14_0_, task0_.SWIMLANE_ as SWIMLANE14_14_0_, task0_.TASKCONTROLLER_ as TASKCON15_14_0_ from JBPM_TASK task0_ where task0_.ID_=?Hibernate: select swimlane0_.ID_ as ID1_13_0_, swimlane0_.NAME_ as NAME2_13_0_, swimlane0_.ACTORIDEXPRESSION_ as ACTORIDE3_13_0_, swimlane0_.POOLEDACTORSEXPRESSION_ as POOLEDAC4_13_0_, swimlane0_.ASSIGNMENTDELEGATION_ as ASSIGNME5_13_0_, swimlane0_.TASKMGMTDEFINITION_ as TASKMGMT6_13_0_ from JBPM_SWIMLANE swimlane0_ where swimlane0_.ID_=?2008-03-04 00:14:13 DEBUG (TestSetUp.java:31) - Tasks found, Swimlane: [buyer].2008-03-04 00:14:13 DEBUG (SessionFactoryUtils.java:714) - Processing deferred close of Hibernate Sessions?
?