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

blazeds flex与java通信

发布时间:2020-12-15 05:04:21 所属栏目:百科 来源:网络整理
导读:MyEclipse_8.5+flex_4+Blazeds配置 ? 需要软件: blazeds-turnkey-4.0.0.14931.zip、 http://opensource.adobe.com/wiki/display/blazeds/Downloads ? ? Blazds 的配置 :下载个Blazds的包,解压,将其中的blazeds.war、ds-console.war、samples.war拷贝到 T

MyEclipse_8.5+flex_4+Blazeds配置

?

需要软件:

blazeds-turnkey-4.0.0.14931.zip、

http://opensource.adobe.com/wiki/display/blazeds/Downloads

?

?Blazds的配置:下载个Blazds的包,解压,将其中的blazeds.war、ds-console.war、samples.war拷贝到Tomcat下的webapps文件夹中就好,

运行下,http://localhost:8080/samples 看看有没有配置成功

?

搭建一个web工程没有那么简单,因为flex只是做为表示层展示,flex只接收java返回数据,那怎么和java服务端通信呢?这时我们需要用到adobe公司开发的一个开源项目Blazeds。

Blazeds是一个基于服务器的 Java远程控制 (remoting) 和 Web 消息传递 (messaging) 技术,以LGPL(Lesser GNU Public License)公共许可证书发布。它能够使得后端的 Java 应用程序和运行在浏览器上的 Adobe Flex 应用程序相互通信。在Java应用服务器上,它以servlet的形式存在, 因此可以在任何标准Java网络应用中运用它。下载地址是:Blazeds?

二、打开Myeclise8.0新建一个javaweb工程,选择javaEE 5.0如图2?

三、右击WebRoot选择import—>GeneralàFile system,展开发现在WEB-INF目录下面多了flex文件夹,这个很重要主要是通信的4个配置文件。如图3?

右击WebRoot选择import—>GeneralàFile system?

单击Browse选择tomoat服务器安装地址,然后选择webapps中的blazeds文件夹(就是你配置Blazeds的地址)

单击确定,然后勾选它

单击Finish然后选择Yse to all

导入成功

四,部署flexweb项目到tomcat里面。这部重要因为下面要整合flex必须得启动服务。我部署的服务器物理路径为:D:softapachetomcatwebappsflexweb

六、转换为flex项目,首先选中你的jspweb项目右键选择添加/更改项目类型,在选择添加flex项目类型

七、选服务器为j2ee,然后选择Blazeds如图5

八、 下一步配置你的服务器路径,上面说了我的物理路径是D:softapachetomcatwebappsflexweb所以我下面就填如下信息如图6

根文件夹就是服务物理路径,根URL就是你的访问路径我这里tomcat的端口是8080所以就这样填,看你的端口而定然后在加上你的项目名称,上下文根目录就填项目名称就行了。最后输出路径我把后面的目录改为flex。记得点一下验证配置只有通过才有效哦,如图6

九、解决创建的错误如图7

找到Problems看到有一个错误然后我们右键选重新创建HTML模板。这里错误已经解决,但是新的问题又来了,src是java的源文件夹存java源代码地方,但是现在被flex给占用了

十、更改flex的项目源文件为flex_src,右键项目属性找到flex构键路径的主源文件夹把src改为flex_src如图9

十一、然后把src文件夹里面的flexweb.xml移动到flex_src文件夹里面,最终目录路径如图10

下面实现flex与java通信

现在基本的弄好了,现在就是要配置相关文件了,首先我们打开之前做好flexweb项目,然后切换到Myeclipse视图。如果项目出错红色的XX,不要紧那是因为我们没有启动Tomcat,如果启动了服务器还有重新编译flex项目才能正常。但是这里先不弄等我们弄完在搞它。

一、在src目录创建java文件

package rain.hr.loginValidation;

public class Login {

	/**
	 * @param args
	 */
	
	public String userLogin(String name){
		System.out.println("someone login");
		return "hello"+name;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}



?

二、配置Webroot/WEB-INF/flex/remoting-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service" 
    class="flex.messaging.services.RemotingService">

    <adapters>
        <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
    </adapters>

    <default-channels>
        <channel ref="my-amf"/>
    </default-channels>

<destination id="loginTest">
    <properties>
        <source>rain.hr.loginValidation.Login</source>
    </properties>
 </destination>


</service>

这里的配置文件是加上去的

<destination id="loginTest">
    <properties>
        <source>rain.hr.loginValidation.Login</source>
    </properties>
 </destination>


?

这个是配置flex访问java方法的一个远程对象方法,配置后就可以与java通信了。我们试试吧

?

三、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">
	<fx:Declarations>
		<s:RemoteObject id="Login" destination="loginTest" result="login_resultHandler(event)"  />
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			protected function login_resultHandler(event:ResultEvent):void
			{
				var name:String=event.result as String;
				Alert.show(name);
			}
			
			protected function btnSend_clickHandler(event:MouseEvent):void
			{
				Login.userLogin(txtName.text);
			}
		]]>
	</fx:Script>

	<s:Panel x="87" y="20" width="250" height="200" title="www.accptecg.com flex4">
		<s:TextInput x="16" y="37" id="txtName"/>
		<s:Button x="168" y="38" label="发送" id="btnSend" click="btnSend_clickHandler(event)"/>
	</s:Panel>

</s:Application>


?

下面的这个配置就是调用java端的一个远程对象, destination="loginTest"就是我们刚才配置的remoting-config.xml文件中的ID名称,result="login_resultHandler"就是如果服务器成功就执行result里面的方法。

?<fx:Declarations>
??<s:RemoteObject id="Login" destination="loginTest" result="login_resultHandler(event)" />

?</fx:Declarations>

然后点发送按钮时发送远程对象的helloWorld方法,执行click="btnSend_clickHandler(event)"

Login.userLogin(txtName.text);

执行RemoteObject id="Login" 对象对应java类rain.hr.loginValidation.Login里的userLogin方法

四、重新验证flex服务器


好了现在可以访问了。展示一下小作品吧

?

解决办法:打开blazeds目录,我的目录如下::Tomcat 5.5.1webappsblazedsWEB-INF
找到web.xml文件,打开此文件,在此文件 中找到

<!-- begin rds>
? <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>true</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>
<end rds -->
内容,将<!-- begin rds>和<end rds -->这二个注册删除,

吧安全验证true改为false

保存,从新启动Tomcate服务器
注册:修改了配置文件后必须重新启动Tomcate服务器

不知道为什么有的时候改了目录下的web.xml工程下的web.xml没有跟着改变 那就两个都改

(编辑:李大同)

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

    推荐文章
      热点阅读