加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

blazeds实现java到flex类映射

发布时间:2020-12-15 04:40:10 所属栏目:百科 来源:网络整理
导读:下面通过实例介绍如何使用blazeds实现类映射: 首先下载blazeds项目文件,解压名为blazeds.war的包,找到WEB-INF目录,将lib下的jar文件放入java项目lib目录下,将web.xml的文件拷贝到项目的web.xml下(建议将原web.xml的内容全部注释,待映射完成后再恢复)

下面通过实例介绍如何使用blazeds实现类映射:

首先下载blazeds项目文件,解压名为blazeds.war的包,找到WEB-INF目录,将lib下的jar文件放入java项目lib目录下,将web.xml的文件拷贝到项目的web.xml下(建议将原web.xml的内容全部注释,待映射完成后再恢复)。

随后找到web.xml中间一段名为“RDSDispatchServlet”的配置,去掉对该段配置的注释,同时将参数“useAppserverSecurity”的值设为false,该段代码就是设置远程数据服务的,实现flex与java的数据交互:


	<servlet>
		<servlet-name>RDSDispatchServlet</servlet-name>
		<display-name>RDSDispatchServlet</display-name>
		<servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>
		<init-param>
			<param-name>useAppserverSecurity</param-name>
			<param-value>false</param-value>
		</init-param>
		<init-param>
			<param-name>messageBrokerId</param-name>
			<param-value>_messageBroker</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>


?

?

随后打开WEB-INF/flex/remoting-config.xml文件,在<service>标签体中添加供flex调用的类配置,具体代码如下:

?

Xml代码??

收藏代码

  1. <destination?id="LoginServiceImpl">??
  2. ????????properties ????????????source>com.bless.login.service.impl.LoginServiceImpl</ ????destinationdestination?id="LoginInfoServiceImpl">com.bless.ospm.service.impl.LoginInfoServiceImpl>??

注意:这段配置就是指引flex如何访问java对象,同时也是指引blazeds配置类映射的功能。另外这里配置的一定是实现类地址,不能是接口。

在com.bless.login.service.impl.LoginServiceImpl类中,我们添加一个方法作为随后的测试:

Java代码??

收藏代码

    @Override??
  1. ????public?LoginInfo?getLoginInfo(LoginInfo?looginInfo)?{??
  2. ????????return?looginInfo;??
  3. ????}??

?java端的代码基本完成,我们可以将项目部署到tomcat服务器上,部署成功后打开flash builder。

新建一个flex项目,服务器技术选择j2ee的blazeds:



?

确认无误后选择“下一步”,这一步是关键:“根文件夹”表示java项目的部署地址,根表示通过http访问项目的根路径,上下文根目录表示java项目的根目录名,输出文件夹表示编译flex后生产的flex文件存放地址。



?输入完成后选择“验证配置”,如果提示有效则选择确定即可。

下面开始配置类映射:flash builder下面工具栏有一个“数据/服务”,选择“连接数据/服务”

数据类型选择blazeds,点击“下一步”,如果提示输入身份认证,选择“不需要密码”:



?

随后我们可以看到在表格中已经列出了可连接的服务项,这些服务器项是在java WEB-INF/flex/remoting-config.xml中配置的。全选点击确定即可:
?


?

注意:你可能会遇到这样的错误“类名 contains overloaded method and is not supported for introspection”意思是类中有方法重载(存在同名方法)无法解析,我目前的办法是把重名方法修改掉,因为Flex不支持方法重载。

生成成功之后,我们可以看到在flex项目下生成了很多as类,这些就是我们需要的:



?

最后编写flex代码测试:

<?xml?version="1.0"?encoding="utf-8"?>??
  • s:Application?xmlns:fx="http://ns.adobe.com/mxml/2009"???
  • ???????????????xmlns:s="library://ns.adobe.com/flex/spark"???
  • ???????????????xmlns:mx="library://ns.adobe.com/flex/mx"?minWidth="955"?minHeight="600"?xmlns:services="services.*" ??????
  • fx:Script ????????<![CDATA[?
  • ????????????import?mx.controls.Alert;?
  • ????????????import?mx.rpc.events.FaultEvent;?
  • ????????????import?mx.rpc.events.ResultEvent;?
  • ?????????????
  • ????????????import?valueObjects.LoginInfo;?
  • ????????????//远程请求的回调函数?
  • ????????????protected?function?resultHandler(event:ResultEvent):void?
  • ????????????{?
  • ????????????????var?login:LoginInfo?=?event.result?as?LoginInfo;?
  • ????????????????Alert.show("loginCode:"+login.loginCode+"???password:"+login.password);?
  • ????????????}?
  • ????????????protected?function?faultHandler(event:FaultEvent):void?
  • ?????????????????
  • ????????????protected?function?button1_clickHandler(event:MouseEvent):void?
  • ????????????????var?login:LoginInfo?=?new?LoginInfo();?
  • ????????????????login.loginCode?=?t1.text;?
  • ????????????????login.password?=?t2.text;?
  • ????????????????remoteObject.getLoginInfo(login);?
  • ????????]]>??
  • fx:Declarationss:RemoteObject?id="remoteObject"??
  • ????????????????????????destination="LoginServiceImpl"??
  • ????????????????????????result="resultHandler(event)"??
  • ????????????????????????fault="faultHandler(event)"s:RemoteObjects:TextInput?x="66"?y="34"?id="t1"/>??
  • s:TextInput?x="66"?y="77"?id="t2"s:Button?x="66"?y="118"?label="按钮"?click="button1_clickHandler(event)"s:Application 查看运行效果:


  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读