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);
  }

 

时间: 2024-09-20 01:11:41

OA中SSH+JBPM项目整合的相关文章

java项目中,solr如何整合mongoDB

问题描述 java项目中,solr如何整合mongoDB 正在做一个java项目,这个项目使用mongoDB数据库,采用solr搜索引擎.请问如何整合这两者?

ssh框架在整合中出现了问题,求指导。

问题描述 ssh框架在整合中出现了问题,求指导. 2015-8-14 15:02:47 org.apache.catalina.core.AprLifecycleListener init 信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:UsersThinkPadApp

pmp学习3——项目整合管理

项目整合管理包括 识别.定义.组合.统一与协调项目管理过程组的各过程及项目管理活动而进行的各种过程和活动.在项目管理中,"整合"兼具统一.合并.连接和一体化的性质,对完成项目.成功管理干系人期望和满足项目要求,都至关重要. 下面抱过了项目整合管理的各个过程: 1.制定项目章程: 制定一份正式批准项目或阶段的文件,并记录能反映干系人需要和期望的初步要求的过程. 2.制定项目管理计划:对定义.编制.整合和协调所偶子计划所必须的行动进行记录的过程. 3.知道与管理项目执行:为实现项目目标而执

j2ee-关于J2EE项目整合GIS功能的问题

问题描述 关于J2EE项目整合GIS功能的问题 一个电子政务系统,需要将某些建筑的信息加载到地图上,然后可以在地图上进行查询功能,主要作用是用来展示信息. 初步考虑到是直接用在线地图(百度.天地图),然后从数据库中读坐标,然后在加载地图的时候,直接在地图上标记处点,然后单击的时候,出现信息提示框,数据库就用普通的关系型数据库,存放x坐标.y坐标.关联ID. 那么问题来了: 其一,如果把地图缩放到很大,然后地图上的点就太多了,加载起应该会很慢. 其二就是做搜索的时候,怎么选取符合点. 真正让我纠结

android-把两个不同的安卓项目整合到一起。弄成一个安装包,并且具有两个项目的功能。

问题描述 把两个不同的安卓项目整合到一起.弄成一个安装包,并且具有两个项目的功能. 我手里有两个安卓项目so和TestRotateAnim,我想在so项目上有一个按钮,一点击就跳转到TestRotateAnim这个项目上.话不多说直接上图. 解决方案 用广播完全可以实现,在图片的项目中注册广播,在按钮的项目中发送广播啊,点击的时候发送广播. 这是我最近了解的希望对你有用,不会的话可以来问我 解决方案二: 为什么只传上来一张图 解决方案三: 解决方案四: 你干脆直接新建一个activity,然后直

Cocos2d-x 3.0 beta 中加入附加项目,解决无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or directory”

Cocos2d-x 3.0 Alpha 1开始 对目录结构进行了整合.结果有些附加项目也被在项目中被精简出去. 比如说如果你需要使用CocoStdio导出的JSON.或使用Extensions扩展库,libCocosStudio.libExtensions.libGUI都需要在你手动添加. 如果你碰到类似这样的错误" fatal error C1083: 无法打开包括文件:"extensions/ExtensionMacros.h": No such file or dire

【PMP】Head First PMP 学习笔记 第四章 项目整合管理

第四章 项目整合管理 项目经理每天的工作 力保项目顺利进行 紧密监督以确保计划进行 计划本身不完善需要予以修正 即使是更大的项目的子项目,也要有收尾的过程 6个整合管理过程 整合管理划分为6个过程,项目经理必须掌握的核心职责. 1.制订项目章程 授权你展开工作的文档,通常由赞助人(为项目提供资金的人)交给你. 2.制订项目管理计划 项目管理计划涵盖了所有知识领域,很大一部分就是告诉你在出现问题时如何处理变更. 3.指导和管理项目执行 确保所有人都在做他们本该做的事,项目创建的产品和项目确实满足干

【PMP认证考试之个人总结】第 3 章 项目整合管理

第 3章 项目整合管理 <PMP个人备考笔记(全篇)>下载 3.1 综述   何时任命PM ? ①最好时机 ===>制定项目章程时(因为项目章程最好由PM编制,但需要高层审批) ②最晚时间 ===>规划开始前 3.2 制定项目章程   1.关于"项目章程"的考点: ①编写最好是PM,但是必须要高层审批: ②标志项目正式启动,PM正式授权: ③不应用合同作为项目章程: ④主要内容(12个方面) 不包括: ①指定的资源: ②固定的完工日期: ③定量的风险分析: ④项

【PMP】PMBOK 笔记 第4章 项目整合管理

第4章 项目整合管理 识别.定义.组合.统一和协调各项目管理过程组的各种过程和活动而开展的过程与活动. "整合"兼具统一.合并.沟通和集成的性质 选择资源分配方案.平衡相互竞争的目标和方案,以及管理项目管理知识领域之间的依赖关系. 当过程之间发生相互作用时,项目整合管理就显得非常必要. 在项目管理过程组的各过程间,经常反复发生联系. 总结 作为本书的第一个管理过程组,贯穿了整个项目. 其中涉及到了很多内容,都是在其他章节才有的,所以只要了解就行,以后多看几遍书,知识点就会交叉补充的.