基于Flex三种通讯方式的Java配置与整合.docx_第1页
基于Flex三种通讯方式的Java配置与整合.docx_第2页
基于Flex三种通讯方式的Java配置与整合.docx_第3页
基于Flex三种通讯方式的Java配置与整合.docx_第4页
基于Flex三种通讯方式的Java配置与整合.docx_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Flex三种通讯方式的Java配置与整合2013年8月13日目录一、前言3二、基础信息准备61.spring-flex 1.0.3(AMF)72.blazeds(AMF)83.backport-util-concurrent 3.1(AMF)84.struts-(httpservice)95.cxf 2.7.6(webservice)10三、具体配置方案与测试101.第一步我们先来配置SH(spring + hibernate)102.增flex-spring服务支持,是项目支持AMF通讯协议(FSH)273.增struts服务支持,是项目支持http通讯协议(httpservice)304.增cxf服务支持,是项目支持sopa通讯协议(webservice)35四、总结38一、 前言在项目开发过程中,很多时候需要给第三方提供一些接口来处理项目中的一下数据,然而在使用flex的AMF通信方式来配置我们的java web project的时候,我们就无法来处理这样的需求,所以这个时候我们可以合理的引入httpservice通讯方式和webservice通讯方式来弥补java服务端这一缺陷。下面我们提一下flex三种通讯方式:通讯方式通信协议数据交互格式优点缺点HttpService常用的http协议XML数据格式通用,便于不同应用系统间交换数据1数据在发送前需要转换成XML格式,接收后要解析XML数据。哪怕是只发送一个简单的的数字也要如此2在处理复杂数据类型如图片,对象的时候,非常不方便WebServiceSOAP协议XML同上同上RemoteObjectFlex自定义的高效二进制数据通讯协议:AMF任意(可以是数字,字符串,对象,图片等等)能够处理各种类型的数据类型,速度快需要专门的服务器端软件LCDS(FDS)或AmfPHP。LCDS(FDS)是收费的,价格不菲。其中也可使用免费版本(blazeds),但是有限制。(#)这里简单说明一下LCDS与blanzeds的区别。BlazeDS可以看成是LCDS的一个子集,而且是一个开源产品,在一般的项目中完全可以替代LCDS。(抱歉,adobe官方的图片找不到了,所以找了张有水印的) 代表此功能可用FeaturesBlazeDSLCDSData management ServicesClient-Server synchronizationConflict resolutionData pagingSQL adapterHibernate adapterDocument ServicesLiveCycle remotingRIA-to-PDF conversionEnterprise-Class Flex application servicesData access/remotingProxy serviceAutomated testing supportSoftware clusteringWeb tier compilerEnterprise IntegrationWSRP generationAjax data servicesFlex-Ajax bridgeRuntime configurationOpen adapter architectureJMS adapterServer-side component framework integrationColdFusion integrationOffline Application SupportOffline data cacheLocal message queuingReal - Time DataPublish and Subscribe messagingReal -time data quality of serviceRTMP tunnelingFeaturesBlazeDSLiveCycle Data Services ES2RPC servicesJava remoting/Action Message Format (AMF)YesYesAjax client libraries to Java remotingYesYesWS/JSON proxy serviceYesYesMessagingServlet-based messaging services (hundreds of clients per CPU)YesYesJava NIO high-performance messaging (thousands of clients per CPU)NoYesReal Time Messaging Protocol (RTMP)NoYesData throttlingNoYesReliable communicationsNoYesData managementTransaction (batch processing)NoYesData pagingNoYesLazy loading (on demand)NoYesConflict resolution and synchronizationNoYesSQL adapterNoYesHibernate adapterNoYesFiber-aware assemblerNoYesOffline web applicationsNoYesDevelopment and deploymentSpring integration supportYesYesAdobe Flash Builder modeling plug-inNoYesEnterprise supportNoYesRIA PDF generationNoYesWSRP portal integrationNoYesLoad/stress testing toolNoYesEdge serverNoYesEnterprise support plansNoYes这份是adobe公司给的对比二、 基础信息准备基础准备,在这里我们使用的IDE是myeclipse10.7.1(因为在使用jar包的时候使用的是myeclipse自带包)。JDK使用的是5基本配置与框架使用web层:1) spring-flex 1.0.3(AMF)2) struts (httpservice)3) cxf 2.7.6(webservice)service层: 1) spring 3.1 使用myeclipse自带DAO层:1) hibernate 3.3 使用myeclipse自带下载jar包1. spring-flex 1.0.3(AMF)/download/community这里我们使用的是1.0.3这个版本。2. blazeds(AMF)adobe blazeds-bin-4931.zip/cfusion/entitlement/index.cfm?e=lc_blazeds登录,下载blazeds,最新版本为4931。3. backport-util-concurrent 3.1(AMF)/projects/backport-jsr166/files/backport-jsr166/3.1/这个在下载时请注意版本,这里下载backport-util-concurrent-Java60-3.1.zip,这个为jdk1.6下的jar文件。4. struts-(httpservice)/download.cgi#struts2315配置过SSH的程序员都知道,在eclipse中使用软件自带的struts时,在项目中展现的形式是这样的形式,而不能直接加入到WEB-INF/lib文件夹下面。5. cxf 2.7.6(webservice)/download.html这里使用cxf框架来对webservice中spring的整合。三、 具体配置方案与测试1. 第一步我们先来配置SH(spring + hibernate)1) 创建java web project2) 增加spring支持点击Next 按钮下一步Finish3) 增加hibernate支持点击Next 按钮 下一步点击Next 按钮下一步点击Next 按钮下一步这里配置数据库连接信息,点击Next 按钮进入下一个步骤Finish 完成hibernate的配置4) 配置项目中的web.xml文件,使其支持spring、hibernate服务。springorg.springframework.web.context.ContextLoaderListenercontextConfigLocationclasspath:applicationContext.xmlhibernateFilterorg.springframework.orm.hibernate3.support.OpenSessionInViewFiltersingleSessiontrueflushModeAUTO hibernateFilter/*5) 配置applicationContext.xml文件,增加spring事务管理功能org.hibernate.dialect.SQLServerDialectPROPAGATION_REQUIREDPROPAGATION_REQUIRED,readOnlyPROPAGATION_REQUIRED,readOnlyPROPAGATION_REQUIRED,readOnlyPROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIRED*Service配置spring通过service层来管理数据库事务。其中,dataSource和sessionFactory由eclipse自动产生。6) 测试spring、hibernate配置是否成功a) 在数据库中新建表Person,包含id(int自增)、name(varchar(16)和age(int)三字段。b) 增加hibernate annotation配置方式类Person.javapackage com.bean;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;EntityTable(name = person, schema = dbo, catalog = report)public class Person implements java.io.Serializable private static final long serialVersionUID = 1L;/ Fieldsprivate Integer id;private String name;private Integer age;/ Constructors/* default constructor */public Person() /* full constructor */public Person(Integer id, String name, Integer age) this.id = id; = name;this.age = age;/ Property accessorsIdGeneratedValue(strategy = GenerationType.AUTO)Column(name = id, unique = true, nullable = false)public Integer getId() return this.id;public void setId(Integer id) this.id = id;Column(name = name, nullable = false, length = 16)public String getName() return ;public void setName(String name) = name;Column(name = age, nullable = false)public Integer getAge() return this.age;public void setAge(Integer age) this.age = age;注意:这里由于ID是自增类型所以需要增加GeneratedValue(strategy = GenerationType.AUTO)的注解c) 建立DAO层java类PersonDAO.javapackage com.dao;import java.util.List;import org.hibernate.Query;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.bean.Person;SuppressWarnings(unchecked)public class PersonDAO extends HibernateDaoSupport public void saveOrUpdate(Person ps) try getHibernateTemplate().saveOrUpdate(ps); catch (RuntimeException e) throw e;public List query() try Query query = getSession().createQuery(from Person);return query.list(); catch (RuntimeException e) throw e;d) 建立service层java类Person.javapackage com.service;import java.util.List;import com.bean.Person;import com.dao.PersonDAO;public class PersonService private PersonDAO personDAO;public void save(Person ps) try personDAO.saveOrUpdate(ps); catch (RuntimeException e) throw e;public List query() try return personDAO.query(); catch (RuntimeException e) throw e;public PersonDAO getPersonDAO() return personDAO;public void setPersonDAO(PersonDAO personDAO) this.personDAO = personDAO;e) 配置spring,增加上面几个类的服务支持f) 编写测试类public static void main(String args) ApplicationContext ac = new ClassPathXmlApplicationContext(applicationContext.xml);PersonService service = (PersonService) ac.getBean(PersonService);Person ps = new Person();ps.setName(name);ps.setAge(10);service.save(ps);List list = service.query();for (Person vo : list) System.out.println(vo.getId() + , + vo.getName() + , + vo.getAge();报错误信息java.lang.NoClassDefFoundError: org/objectweb/asm/Type原因是缺少asm-3.3.jar包,可以从前面准备的struts-中获取,并服务在项目的WEB-INF/lib文件夹下。运行成功,控制台输出:1,name,10测试成功,spring、hibernate整合(包含数据)没有问题。接下去,我增加flex与spring直接的通讯整合。2. 增flex-spring服务支持,是项目支持AMF通讯协议(FSH)1) 解压blazeds-bin-4931.zip中blazeds.war文件2) 复制./blazeds/WEB-INF/lib下的jar包到项目的WEB-INF/lib文件夹下3) 复制./blazeds/WEB-INF/flex下的jar包到项目的WEB-INF文件夹下4) 删除messaging-config.xml、proxy-config.xml、remoting-config.xml和perties文件5) 修改services-config.xml文件删除和部分增加6) 增加flex-spring jar包将backport-util-concurrent.jar和org.springframework.flex-1.0.3.RELEASE.jar复制到项目的WEN-INF/lib文件夹下。7) 配置web.xml使项目支持flex-springflexorg.springframework.web.servlet.DispatcherServletcontextConfigLocation1flex/messagebroker/*8) 配置spring文件使其支持flex remote修改beans头文件为增加flex支持7) 测试AMF通讯配置方式是否正确a) java web项目中增加dest类。PersonDest.javapackage com.dest;import java.util.List;import com.bean.Person;import com.service.PersonService;public class PersonDest private PersonService personService;public List query() return personService.query();public String save(Person ps) personService.save(ps);return success;public PersonService getPersonService() return personService;public void setPersonService(PersonService personService) this.personService = personService;b) 在spring中配置PersonDest为flex RemoteObject对接类c) 建立flex测试applicationPerson.aspackage com.bean RemoteClass(alias=com.bean.Person) public class Person / public var id:int;public var name:String;public var age:int;public function Person() fsh_fb.mxmld) 测试结果运行结果界面数据库3. 增struts服务支持,是项目支持http通讯协议(httpservice)1) 解压下载的struts--all.zip文件。2) 解压struts-/apps/ struts2-blank.war文件。struts2-blank项目是struts2的一个基础配置项目,接下来我们可以使用这个项目来参考配置我们的struts框架。3) 复制struts2-blank/WEB-INF/lib中的jar文件到我们项目的WEB-INF/lib文件夹中。4) 复制struts2-blank/WEB-INF/classes中的struts.xml文件到我们的src文件目录下。5) 配置web.xml使其支持struts服务struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2*.do6) 建立action类PersonAction.javapackage com.dest;import java.io.PrintWriter;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.bean.Person;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.service.PersonService;public class PersonAction extends ActionSupport private static final long serialVersionUID = 1L;private PersonService personService;private HttpServletRequest request;private HttpServletResponse response;public String save() System.out.println(action save);try setServlet();String name = request.getParameter(name);int age = Integer.parseInt(request.getParameter(age);Person person = new Person();person.setName(name);person.setAge(age);personService.save(person);PrintWriter out =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论