使用BlazeDS实现Flex与JEE服务器通信

来源:互联网 发布:mac中文稿和照片重复 编辑:程序博客网 时间:2024/05/17 07:33

BlazeDS + Hibernet + Flex 开发Web应用

网上有关于集成BlazeDSFlex的示例,但是大部分都是将客户端和服务器代码放置到一个项目,这种方式使我们在编码时容易产生混淆,并且也不利于大的项目的开发与管理。下面通过一个简单的例子演示一下,建立客户端和服务器端分离的,服务器端采用Hibernet+BlazeDSFlex Web项目。希望对大家有所帮助。

一、开发环境准备

1.       安装MyEclipse8.0插件版、FlashBuider4插件版。注意,这里最好不要安装独立安装版本,要不开发的时候要打开几个IDE,很不方便;

2.       下载BlazeDS 3.2(更高版本也可以),并解压blazeds.war文件,备用;

3.       安装Tomcat 6.0 服务器;

4.       安装DBMS。这里我用的是MSSqlServer 2000。建立测试数据库flex,建立一个login表格,CREATE TABLE login (id char(10),  name char(20),  pwd char(20))。随便输入一点数据,做测试用。

二、J2EE服务器端开发

进入到Eclipse开发环境,切换到MyEclipse视图。

1.       新建Web Project,然后将blazeds.war解压后的WEB-INFMETA-INF两个文件夹拷贝到项目中,覆盖原来的项目文件;

如果你使用的是blazeds3.2这些版本,那么等你把服务器所有工作完成的时候,你会发现客户端仍然连接不上,这是因为3.2版本的blazeds.war文件解压后的blazeds/WEB-INF/lib的目录下面缺少一个flex-rds-server.jar的文件,你可以解压其它更高版本的blazeds.war文件,然后将这个文件复制到相应的文件夹。

2.       修改web.xml文件。

1)        注释或者删除<!DOCTYPE行;

2)        <display-name>BlazeDS</display-name>

修改为<display-name>JeeServer</display-name>

3)        加入以下内容

<servlet>

        <servlet-name>RDSDispatchServlet</servlet-name>

        <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>

    <init-param>

        <param-name>useAppserverSecurity</param-name>

        <param-value>false</param-value>

    </init-param>        

        <load-on-startup>10</load-on-startup>

</servlet>

 

<servlet-mapping id="RDS_DISPATCH_MAPPING">

        <servlet-name>RDSDispatchServlet</servlet-name>

        <url-pattern>/CFIDE/main/ide.cfm</url-pattern>

</servlet-mapping>

3.       持久层建立。

为工程加入Hibernate capability,建立com.zs.hibernate包,对login表进行hibernate反向工程,将生成的文件放置于com.zs.hibernate包之中;

4.       服务层建立。

新建com.zs.service的数据包,用来放置服务器端服务层的代码类,用来读取数据库数据,响应客户端请求。此处可以根据自己的需要编码,这里只提供简单的演示函数。

新建LoginService类,建立String login(String username, String password)方法,用来对输入数据进行判断,如果用户名、密码存在就返回允许登录字符串,如果不存在就返回不允许登录字符串。

5.       Service层的相关类建立服务器端remoting映射,提供给flex客户端调用。

打开WEB-INF/flex/remoting-config.xml文件,加入如下代码:

<destination id="loginService">

    <properties>

        <source>com.zs.service.LoginService</source>

    </properties>

</destination>

6.    部署J2EE服务器端代码。

在通过MyEclipse或者手动的方式将服务器端代码部署到Tomcat服务器中,并启动Tomcat服务器。这里一定要注意一定要启动Tomcat服务器,要不客户端将无法连接。

三、Flex客户端开发

Eclipse开发环境切换到Flash视图。

1.       新建Flex 项目。

1)        在新建Flex项目窗口中将项目命名为FlexClient,应用程序服务器类型选择J2EE,勾选“使用远程对象访问服务”,并选择BlazeDS项。由于我们将J2EE服务器端和Flex客户端放到两个不同的项目里,因此要将“使用WTP创建Java/Flex组合项目”项取消。

2)        点选“下一步”开始配置J2EE服务器。这是Flex客户端文件将要发布到目的地,这些Flex代码将和JEE服务器端代码构成一个完整的应用。

根文件夹:C:/Program Files/Apache/Tomcat 6.0/webapps/JeeServer

URLhttp://localhost:8080/JeeServer/

上下文根目录:JeeServer

这些参数根据自己机器情况配置,需要注意的是根URL字符串需要在最后加上”/”符号。

3)        点“验证配置”后进行下一步,完成客户端项目建立。

2.       JEE服务器端服务器端通过remoting映射的Service类转化为本地Flex调用类。

1)        点击Eclipse IDE 数据à连接数据/服务 菜单项,打开“选择服务类型”窗口,选择BlazeDS项,点击“下一步”;

2)        在“导入BlazeDS/LCDS服务”窗口,勾选需要导入的服务类。在“服务详细信息”部分配置导入后生成的本地类名称及包。点击完成即可,这样客户端就可以像调用本地Flex类一样使用远程服务了。

3.       运行客户端程序。

有时候客户端程序代码经过修改之后,运行显示的仍然是原来老版本的界面,这个时候应该清空浏览器缓存,基本可以解决问题。

如果还不行,那么可以到Tomcat目录下删除Flex发布的调试的文件夹目录(我这里是C:/Program Files/Apache/Tomcat 6.0/webapps/JeeServer/FlexClient-debug),然后右键点击项目,选择“属性”,然后选中Flex服务器项目,不用改动任何参数就可以重新生成调试文件夹了。当然也可以将项目发布到Tomcat服务器端程序文件夹中。

所有的办法都看起来不是特别的顺畅,如果有找到更好办法的朋友告诉本人一下,非常感谢!:)

四、有关调试

调试时有时会提示找不到调试版本的Flash Player,可以卸载原来的Flash Player,然后

安装新的调试版本的Flash Player

在安装Flash Player的调试版本时,经常会因为之前的版本问题导致安装不上,提示去获取最新的版本。等你下载到debug版本时,发现仍然提示你不是最新的版本,需要下载等等。解决方法如下:删除注册表中之前安装的版本记录即可

注册表路径:HKEY_LOCAL_MACHINE/SOFTWARE/Macromedia/FlashPlayer/SafeVersions

删除最高版本的键值,例如下面的9.0,再执行下载的调试版本Flash Player

       当然有时候安装的调试版Flash IE插件不能应用到一些扩展浏览器中,比如Maxthon中,这个时候你可以将项目调试的浏览器指定为IE。修改方法:窗口à首选项,选择“常规àWeb浏览器,然后选择IE即可。

       调试时服务器可以用System.out.println(“”)、客户端可以使用trace() 向系统控制台窗口输入一些重要的信息。注意在Eclipse IDE主界面中的“控制台”面板的右上角有一个“显示选择的控制台”按钮,点击这个按钮可以在Flex客户端控制台和JEE服务器端控制台之间切换,从而看到不同的信息。

原创粉丝点击