基于Flex三种通讯方式的Java配置与整合2013年8月13日目录一、前言...................................................................................................................................3二、基础信息准备...................................................................................................................61.spring-flex1.0.3(AMF)......................................................................................72.blazeds(AMF)...........................................................................................................83.backport-util-concurrent3.1(AMF)................................................................84.struts-2.3.15.1(httpservice)..........................................................................95.cxf2.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通信方式来配置我们的javawebproject的时候,我们就无法来处理这样的需求,所以这个时候我们可以合理的引入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官方的图片找不到了,所以找了张有水印的)√代表此功能可用FeaturesBlazeDSLCDSDatamanagementServicesClient-Serversynchronization√Conflictresolution√Datapaging√SQLadapter√Hibernateadapter√DocumentServicesLiveCycleremoting√RIA-to-PDFconversion√Enterprise-ClassFlexapplicationservicesDataaccess/remoting√√Proxyservice√√Automatedtestingsupport√Softwareclustering√√Webtiercompiler√EnterpriseIntegrationWSRPgeneration√Ajaxdataservices√√Flex-Ajaxbridge√√Runtimeconfiguration√√Openadapterarchitecture√√JMSadapter√√Server-sidecomponentframeworkintegration√√ColdFusionintegration√OfflineApplicationSupportOfflinedatacache√Localmessagequeuing√Real-TimeDataPublishandSubscribemessaging√√Real-timedataqualityofservice√RTMPtunneling√FeaturesBlazeDSLiveCycleDataServicesES2RPCservicesJavaremoting/ActionMessageFormat(AMF)YesYesFeaturesBlazeDSLiveCycleDataServicesES2AjaxclientlibrariestoJava™remotingYesYesWS/JSONproxyserviceYesYesMessagingServlet-basedmessagingservices(hundredsofclientsperCPU)YesYesJavaNIOhigh-performancemessaging(thousandsofclientsperCPU)NoYesRealTimeMessagingProtocol(RTMP)NoYesDatathrottlingNoYesReliablecommunicationsNoYesDatamanagementTransaction(batchprocessing)NoYesDatapagingNoYesLazyloading(ondemand)NoYesConflictresolutionandsynchronizationNoYesSQLadapterNoYesHibernateadapterNoYesFiber-awareassemblerNoYesOfflinewebapplicationsNoYesFeaturesBlazeDSLiveCycleDataServicesES2DevelopmentanddeploymentSpringintegrationsupportYesYesAdobeFlash®Builder™modelingplug-inNoYesEnterprisesupportNoYesRIAPDFgenerationNoYesWSRPportalintegrationNoYesLoad/stresstestingtoolNoYesEdgeserverNoYesEnterprisesupportplansNoYes这份是adobe公司给的对比二、基础信息准备基础准备,在这里我们使用的IDE是myeclipse10.7.1(因为在使用jar包的时候使用的是myeclipse自带包)。JDK使用的是1.6.0.45基本配置与框架使用web层:1)spring-flex1.0.3(AMF)2)struts2.3.15.1(httpservice)3)cxf2.7.6(webservice)service层:1)spring3.1[使用myeclipse自带]DAO层:1)hibernate3.3[使用myeclipse自带]下载jar包1.spring-flex1.0.3(AMF)这里我们使用的是1.0.3这个版本。2.blazeds(AMF)adobeblazeds-bin-4.0.0.14931.zip=lc_blazeds登录,下载blazeds,最新版本为4.0.0.14931。3.backport-util-concurrent3.1(AMF)这个在下载时请注意版本,这里下载backport-util-concurrent-Java60-3.1.zip,这个为jdk1.6下的jar文件。4.struts-2.3.15.1(httpservice)配置过SSH的程序员都知道,在eclipse中使用软件自带的struts时,在项目中展现的形式是这样的形式,而不能直接加入到WEB-INF/lib文件夹下面。5.cxf2.7.6(webservice)这里使用cxf框架来对webservice中spring的整合。三、具体配置方案与测试1.第一步我们先来配置SH(spring+hibernate)1)创建javawebproject2)增加spring支持点击Next按钮下一步Finish3)增加hibernate支持点击Next按钮下一步点击Next按钮下一步点击Next按钮下一步这里配置数据库连接信息,点击Next按钮进入下一个步骤Finish完成hibernate的配置4)配置项目中的web.xml文件,使其支持spring、hibernate服务。!--springconfiguration--listenerdisplay-namespring/display-namelistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listenercontext-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:applicationContext.xml/param-value/context-param!--hibernateconfiguration--f