- 浏览: 380373 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ouyida3:
sslaowan,新春快乐,祝你阖家安康狗年大吉:)
【转载】js定义对象 -
qinghechaoge:
感谢分享,受教了
DCloud下拉刷新上拉加载 -
zero鹏:
...
Spring中的AOP -
xuyiooo:
新浪微博很适合高并发,实时性很高的网站参考的
[zz]新浪微博技术架构分析 -
liuxiang00435057:
基于这种风格的权限怎么去控制呢,精确的每个方法
Spring3.0新特征-Restful support MVC
终于要崩溃了,整合这件事不好玩。请有经验的人指导一下~
目前我们使用如下技术:
1、RCP和Web浏览器(Extjs+HTML)两种客户端
2、采用Spring HTTP Invoker为RCP提供远程服务
3、使用Struts Action做控制层(解析HTTP请求,调用Facade,拼接XML,返回Response响应)
4、使用Spring做声明式事务处理,IoC容器,和Template封装操作,以及整合其他框架
5、使用Hibernate做O/R Mapping
6、使用jBPM做工作流引擎。
目前整合方案:
1、Spring和Struts整合,使用Spring提供的Struts插件,配置action-servlet,在其中写入由Spring管理的action。
在web.xml中配置org.springframework.web.context.ContextLoaderListener,来加载applicationContext.xml,这样我们使用Web浏览器方式访问Struts Action时,直接就可以在Action中引入Facade,而不需要使用ctx.getBean这样的代码了。(也就是Spring自带的例子中JPetStore的架构,我们的分层架构和那个基本上一样)
2、Spring和jBPM整合,使用Spring-Module-JBPM,按照其自带的文档中的做法进行整合。
应用程序和jBPM共用一个SessionFactory。
- <beans>
- <!---->
- <bean id="hibernateSessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <value></value>/WEB-INF/classes/hibernate.cfg.xml
- bean>
- <!---->
- <bean id="simpleWorkflow"
- class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">
- <property name="definitionLocation"
- value="classpath:org/springmodules/workflow/jbpm31/simpleWorkflow.xml"/>
- bean>
- <!---->
- <bean id="jbpmConfiguration"
- class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
- <property name="sessionFactory" ref="hibernateSessionFactory"/>
- <property name="configuration" value="classpath:jbpm.cfg.xml"/>
- <property name="processDefinitions">
- <list>
- <ref local="simpleWorkflow"/>
- list>
- property>
- <property name="createSchema" value="true"/>
- <property name="processDefinitionsResources">
- <list>
- <value>classpath:/org/springmodules/workflow/jbpm31/someOtherWorkflow.xmlvalue>
- list>
- property>
- bean>
- <!---->
- <bean id="jbpmTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
- <constructor-arg index="0" ref="jbpmConfiguration"/>
- <constructor-arg index="1" ref="simpleWorkflow"/>
- bean>
- beans>
3、Spring和Spring HTTPInvoker,也使用典型的做法,在web.xml中配置org.springframework.web.servlet.DispathcerServlet
目前存在的问题:
1、使用HTTPInvoker提供服务,不能像通过Struts Action一样直接使用Facade(因为获取不到),而需要写ctx.getBean,因为不是很理解Web容器(使用Tomcat测试,WAS发布)的机理,不过觉得org.springframework.web.context.ContextLoaderListener和org.springframework.web.servlet.DispathcerServlet这两个东西ms不能共享同一个上下文。而applicationContext.xml只载入到了org.springframework.web.context.ContextLoaderListener的上下文中,而没有载入到org.springframework.web.servlet.DispathcerServlet的上下文。如果两个都载入,意味着需要加载两遍applicationContext.xml,连接两遍数据库,创建两个SessionFactory。
目前我们是使用ctx.getBean的方法来获得Facade。将这个方法放到service类的构造器中,Tomcat启动时,自动创建service实例,这时会加载相应的所有配置文件,还会建立数据库连接。
2、我们将HTTP Invoker的service放在Struts Action中(也就是说Action充当Service类),然后在TaskBean中(和jBPM示例websale的做法一样)调用jBPM流程API,在这里我们使用了Spring提供的JbpmTemplate,只是利用其获得JbpmConfiguration,之后就跟使用native JBPM一样了(某些场景我们也会使用JbpmTemplate.execute方法,在回调函数中写,这样context的生命周期就由Template控制了)。我们将TaskBean配置在applicationContext.xml中,它的property值设为jbpmTemplate,ctx.getBean("taskBean");可是报错,加载不到jbpmTemplate。
3、如何将jBPM事务和自制Java代码中的事务一起控制,jBPM的事务是随jbpmContext的创建和销毁而开始和结束的。主要处理的事务是:
1)业务事务失败,jbpm事务必须回退。
2)jbpm事务失败,业务事务也必须回退。
一个基本思路是:将调用业务Facade放入到jbpmTemplate的execute中,由它来负责context生命周期,抛出异常,则context关闭,事务回滚;而使用Spring生命式事务处理,来拦截TaskBean中的方法,这样当业务层抛出异常, jbpmTemplate.execute也不能正常执行结束,业务层也会回滚(还没试过,不知道大家的做法是什么,je上有很多讨论,不过都太虚了,根本不实用)。
关于RCP通过HTTPInvoker远程调用Server端的service,我想如果这个整合不来就只好使用Struts Action返回XML,而通过URLConnection类来进行port和get处理了。
评论
发表评论
-
Hibernate3.6 缓存
2011-12-12 12:06 1923一级缓存 一级缓存和get,load,save ... -
扩展Spring测试框架
2011-11-28 17:56 1224可以利用 @RunWith(Spri ... -
Hibernate inverse
2011-11-17 16:52 700在关联关系中,inverse="false" ... -
解决java.lang.IllegalStateException: getOutputStream() has already been called for
2011-09-28 13:39 32280http://www.blogjava.net/pengpen ... -
Hibernate配置联合主键(内部类实现主键)
2011-09-26 16:13 2134public class A{ privat ... -
Hibernate3.2和Hibernate3.6创建元数据的不同
2011-09-26 14:39 875在Hibernate3.2中,只要cfg.addXML将hbm ... -
[原创]面向服务的框架 Service-Oriented Framework
2011-01-03 15:18 996面向服务的框架 Service-Orient ... -
REST:讨论如何避免URL Template与实际数据的冲突
2010-06-23 19:08 1064看下面几个测试: ... -
Java 编程技术中汉字问题的分析及解决
2009-10-24 14:18 7862000 年 11 月 01 日 在基于 Java 语言 ... -
JSP/Servlet 中的汉字编码问题
2009-10-24 14:01 8742001 年 3 月 01 日 网上就 JSP/S ... -
Servlet 2.3:新特征
2009-10-24 13:54 983题注:目前servlet和jsp ... -
UTF-8 字符处理在 Web 开发中的应用
2009-10-24 13:43 935http://www.ibm.com/developerwor ... -
基础入门-JAVA字符集详解
2009-10-24 13:06 1364建议 1、数据库编码为GB2312 2、web容器编码为U ... -
Spring3.0新特征-Restful support MVC
2009-06-04 21:26 3360Spring 2.5发布不久,Spring3.0项目已经是 ... -
对Grails之误解
2009-05-26 14:39 846转自InfoQ:http://www.infoq.com/cn ... -
Spring MVC(CoC)+FCKEditor
2009-05-26 14:13 3534设计思路参考昨天写的《关于RCP与Web交互的一些 ... -
关于RCP与Web交互的一些设计思路
2009-05-25 12:06 1471使用的Web框架是Spring MVC,并利用其C ... -
我看好Flex
2009-05-20 11:41 8851 99%以上的客户端都安装了Flash runtime,解决 ... -
对比REST之前和REST之后的URI映射
2009-05-19 12:33 19872008年9月23日,JSR3111.0草案通过了J ... -
用ASM为类动态增加属性
2009-05-08 20:26 3500通过程序修改 .class 文件! 下面这个是用 ASM 工具 ...
相关推荐
**RCP+Plug-in开发自学教程** 在软件开发领域,Eclipse RCP(Rich Client Platform)和Plug-in机制是构建可扩展、模块化桌面应用程序的重要工具。本教程将引导你深入理解并掌握这两种技术,帮助你成为一名熟练的RCP...
### Eclipse RCP+Spring构建富客户端Web程序 #### 摘要 随着技术的发展和用户需求的变化,构建高效、响应迅速且用户体验良好的客户端应用变得尤为重要。传统的Web 2.0和丰富的互联网应用(RIA)虽然流行,但在某些...
超级好的鸿蒙网络方面(包含udp+tcp+http+web+wifi+tls+rcp+websocket+其它)项目源代码100%好用.7z
比较好的OSGi学习教程,分享给大家,简单易学...。。。
《Hibernate + RCP + MySQL + JFreeChart 开发实例详解》 在当今的软件开发领域,集成多种技术来创建高效、功能丰富的应用已经成为常态。本实例将深入探讨如何结合Hibernate对象关系映射框架、RCP(Rich Client ...
【Eclipse RCP 插件开发自学教程 (Eclipse3.6)】 Eclipse RCP (Rich Client Platform) 是一个框架,允许开发者构建高度可定制和可扩展的桌面应用程序。本教程是针对Eclipse 3.6版本的,提供了一个详细的学习路径,...
### Eclipse+RCP+打印表格 #### 背景与挑战 在开发基于Eclipse RCP的应用程序时,经常会遇到需要实现打印功能的需求,尤其是在处理表格数据时。由于Eclipse RCP采用的是SWT(Standard Widget Toolkit)作为其图形...
本文将深入探讨如何使用Http Invoker实现RCP客户端与后台的交互,以及相关知识点。 1. **Http Invoker的基本概念**: - Http Invoker是Spring框架的一个组件,它利用HTTP协议来传输Java对象,实现了客户端与服务器...
在IT行业中,RCP(Rich Client Platform)是Eclipse提供的一种构建桌面应用程序的框架,而Spring则是一个广泛应用的Java企业级应用框架,主要用于处理依赖注入、面向切面编程以及服务管理。将RCP与Spring集成可以...
- **开发者邮件列表**:springframework-rcp-dev@lists.sourceforge.net,用于开发者之间的交流和问题解答。 - **问题跟踪系统**:http://opensource2.atlassian.com/projects/spring,用于提交和追踪项目的bug和新...
《Eclipse RCP与Spring OSGi:技术详解与最佳实践》由资源的Eclipse专家亲自...实战篇(第13-15章)详细讲解了Eclipse RCP与Spring OSGi框架、Hibernate ORM框架、JPA规范、Maven工具的整合,以及它与Java的模块化设计
标题中的“在Eclipse RCP中应用Spring OSGI 管理bean(一)”表明这是一篇关于如何在Eclipse Rich Client Platform (RCP)应用程序中集成Spring框架,并利用OSGi服务来管理Bean的教程。Eclipse RCP是一个用于构建桌面...
标题 "spring rcp" 暗示我们要讨论的是Spring Rich Client(Spring RCP)平台,这是一个基于Spring框架的桌面应用程序开发平台。Spring RCP提供了一种利用Spring的强大功能来构建可扩展、模块化的桌面应用的方法。 ...
该资源包含源码和详细的说明文档,是自己在eclipse rcp技术中使用JfreeChart进行的总结,供大家参考
通过本手册的深入学习,开发者不仅能够掌握Spring RCP的关键技术点,还能够灵活运用这些知识解决实际项目中的问题,提升应用的用户体验和性能表现。无论是初学者还是有经验的开发者,都能从中获得宝贵的指导和灵感。
【标题】基于Eclipse的Equinox框架开发OSGi Bundle应用 在Java世界中,OSGi(Open Services Gateway Initiative)是一种模块化系统,它允许开发者创建可独立更新和依赖管理的模块,即Bundle。Eclipse的Equinox是...
在Java中,我们常常借助于Eclipse平台的两个重要框架来实现这一目标:Rich Client Platform(RCP)和Graphical Editing Framework(GEF)。这两个框架为开发者提供了强大的工具,帮助他们构建出复杂且用户友好的应用...
A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client Applications or Remote Application Platform (RCP+RAP), plus Maven and Gradle tooling, and an XML editor....