OA中SSH+JBPM项目整合
一,集成 Spring 与 Hibernate
1,配置SessionFactory
1,配置
---------------------- applicationContext.xml ------------------------
<!-- 配置SessionFactory(整合Hibernate) -->
<context:property-placeholder location="classpath:jdbc.properties" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<bean class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 数据库连接信息 -->
<property name="jdbcUrl" value="${jdbcUrl}"></property>
<property name="driverClass" value="${driverClass}"></property>
<property name="user" value="${username}"></property>
<property name="password" value="${password}"></property>
<!-- 其他配置 -->
<property name="initialPoolSize" value="3"></property>
<property name="maxPoolSize" value="5"></property>
<property name="minPoolSize" value="3"></property>
<property name="acquireIncrement" value="2"></property>
<property name="maxStatements" value="8"></property>
<property name="maxStatementsPerConnection" value="5"></property>
<property name="maxIdleTime" value="20"></property>
</bean>
</property>
<!-- 指定hibernate的配置文件的位置 -->
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
---------------------- jdbc.properties ------------------------
jdbcUrl = jdbc:mysql:///itcastoa
driverClass = com.mysql.jdbc.Driver
username = root
password = 1234
2,测试代码
@Test// 测试 SessionFactory 的配置
public void testSessionFactory(){
SessionFactory sessionFactory = (SessionFactory) ac.getBean("sessionFactory");
Assert.assertNotNull(sessionFactory.openSession());
}
2,配置声明式事务(使用基于注解的方式)
1,配置
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 配置基于注解的事务支持-->
<tx:annotation-driven transaction-manager="transactionManager"/>
2,测试代码
1,Service类
@Service
public class InsertUserService {
@Resource
private SessionFactory sessionFactory;
@Transactional
public void addUsers() {
sessionFactory.getCurrentSession().save(new User());
// int a = 1 / 0; // 这行会抛异常
sessionFactory.getCurrentSession().save(new User());
}
}
2,单元测试
@Test // 测试声明式事务
public void testTransaction() {
InsertUserService service = (InsertUserService) ac.getBean("insertUserService");
service.addUsers();
}
3,在web.xml中配置 spring 的 OpenSessionInView 过滤器(解决抛LazyInitializationException的问题)
1,配置
<!-- 配置 spring 的 OpenSessionInView 过滤器 -->
<filter>
<filter-name>OpenSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInView</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
2,LazyInitializationException异常说明
1,对于集合属性,默认是lazy="true"的,在第一次使用时才加载。
2,但在加载时,如果Session已经关掉了就会抛LazyInitializationException异常
二,集成 Spring 与 Struts2.1.8.1
1,在web.xml配置监听器(Spring Reference 15.2 Common configuration)
<!-- 集成Spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext*.xml</param-value>
</context-param>
2,在struts-config.xml中配置controller(Spring Reference 15.4.1.1. DelegatingRequestProcessor)
<!-- 集成Spring -->
<controller>
<set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor" />
</controller>
3,测试
1,写Action类与Service类
@Controller("testAction")
@Scope("prototype")
public class TestAction extends ActionSupport {
@Resource
private TestService testService;
@Override
public String execute(){
testService.saveTwoUser();
return SUCCESS;
}
}
@Service
public class TestService {
@Resource
private SessionFactory sessionFactory;
@Transactional
public void saveTwoUser() {
sessionFactory.getCurrentSession().save(new User());
// int a = 1 / 0; // 这行会抛异常
sessionFactory.getCurrentSession().save(new User());
}
}
2,在struts.xml中配置Action
<!-- 测试 -->
<action name="test" class="testAction">
<result>/test.jsp</result>
</action>
3,部署到Tomcat中并访问测试。
4,说明:
1,在写Action时要指定 @Controller 与 @Scope("prototype")
2,在struts.xml中配置action时,在class属性中写bean的名称
三,整合Spring与Jbpm4(jBPM4.4 Developers Guide, Chapter 17. Spring Integration)
1,在jbpm.cfg.xml中
1,删除配置:
<import resource="jbpm.tx.hibernate.cfg.xml" />
2,增加配置:
<!-- 整合Spring -->
<import resource="jbpm.tx.spring.cfg.xml" />
2,在applicationContext.xml中配置
<!-- 配置ProcessEngine(整合jBPM4) -->
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">
<!-- jbpmCfg是相对于classpath的相对路径,默认值为jbpm.cfg.xml -->
<property name="jbpmCfg" value="jbpm.cfg.xml"></property>
</bean>
<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
3,测试
@Test // 测试ProcessEngine
public void testProcessEngine() {
ProcessEngine processEngine = (ProcessEngine) ac.getBean("processEngine");
Assert.assertNotNull(processEngine);
}
OA中SSH+JBPM项目整合相关推荐
- Java源码 JavaWeb开发框架 代码 SSH SSM OA ERP CRM Java项目[Java通用框架源码及开发视频教程]
Java源码 JavaWeb开发框架 代码 SSH SSM OA ERP CRM Java项目 功能简介: A.代码生成器(开发利器) 生成Java各层次的类和JSP等文件,提高开发效率 B.阿里巴巴 ...
- 将两个android项目整合,并在父项目中使用子项目的功能
将两个android项目整合到一起,并在父项目中使用子项目的功能 前言 android小白,课设需要整合两个项目,并且使用子项目的功能.简单记录一下整合过程. 整合思路 将子项目设置为library, ...
- angular项目整合到.net mvc中
Webpack配置 第一步必然是要先得到前端项目的打包资源,由强大的webpack来完成,目标是将angular的所有依赖以及应用主代码分别打包到polyfill.js.vendor.js.main. ...
- mysql oa数据库设计_OA项目1:环境搭建之数据库创建与环境添加
首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 指定数据库:Mysql database:oa 建 ...
- java ee ssh三大框架知识点_详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)...
详解JAVAEE--SSH三大框架整合(spring+struts2+hibernate) 发布时间:2020-09-17 13:34:05 来源:脚本之家 阅读:64 作者:kent鹏 一.整合原理 ...
- 面试中各个类型项目讲解
一.ERP进销存项目 1.说说你最近做的这个项目的背景? 这个项目是为××(名称自己构思,为防止同学们面试期间撞车,此处不提供公司名称,但是此名称需要同学们调查一下这个公司是否真实存在,在百度上搜索一 ...
- mongodb java项目 源码_spring项目整合mongodb进行开发
spring项目整合mongodb进行开发: MongoDB的性能指标: 100个并发,插入550万条记录的平均吞吐量:大约4100条/秒 MONGODB实际上是一个内存数据库,先将数据保存到内存,然 ...
- Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...
- 在Eclipse中的Android项目里实现代码复用
引言 开发时通常都会有多个项目间代码复用的需求,这时通常的做法是设置项目依赖,让一个项目引用另一个项目,比如在Visual Studio中这样就很容易实现. 而在Eclipse中的Android项目里 ...
最新文章
- Debian+Pure-ftpd+MySQL+User manager for PureFTPd
- 服务器信号分析,服务器及其讯号解析装置 Server and its signal analysis apparatus
- SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行
- java获得当前文件路径
- fixture.detectChange是如何触发Component view的ngOnInit钩子的
- 7-9 删数问题 (10 分)(思路加详解)
- NIO学习–核心概念与基本读写
- 2008年具有高校自主选拔录取资格的考生名单 - 江苏版
- java多线程的安全问题与死锁(面向厕所编程)
- js去掉html标签和去掉字符串文本的所有的空格
- python二进制解码_使用python3对二进制数据进行编码和解码,以将其包含到JSON中...
- 基于Objective-C的iOS开发--入门篇
- 网络排查工具MTR介绍
- 实盘中在vnpy多策略多交易对交易
- 我所知道坦克大战(单机版)之 让子弹飞、让坦克控制子弹开炮
- # 搜狗输入法~快捷键总结
- 滴滴开源的损失!章文嵩将离职,曾是阿里开源“赶集人”,投身开源 20 年
- 什么是arXiv.org?
- lodop打印html上下居中,lodop打印横向纵向
- MATLAB基础--MATLAB图像处理基础
热门文章
- OpenCASCADE绘制测试线束:几何命令之展示
- boost::math模块非有限环回的基本测试
- boost::math::tools::simple_continued_fraction用法的测试程序
- boost::hana::detail::create用法的测试程序
- boost::geometry::segment_intersection_points用法的测试程序
- VTK:PolyData之CenterOfMass
- VTK:绘图之ParallelCoordinates
- VTK:绘图之Diagram
- VTK:Math之HomogeneousLeastSquares
- VTK:相互作用之TrackballActor