现在的位置: 首页 > 综合 > 正文

Flex使用BlazeDS 的 RemoteObject调用Java类、webservice服务

2013年10月10日 ⁄ 综合 ⁄ 共 3582字 ⁄ 字号 评论关闭


1、下载BlazeDS:

                i. 把那个 .zip 文件保存到你的电脑上
                ii. 里面有两个文件:blazeds.war 和 blazeds-bin-readme.html
                iii. 把里面的 blazeds.war 文件解压到这个目录下:[tomcat-home]\webapps
                打开这个目录:[tomcat-home]\webapps
                i. 你应该会看到一个名为“blaseds”的文件夹
                ii. 在blaseds文件夹里,会有一个名为“WEB-INF”的文件夹
                iii. 在WEB-INF文件夹里会有很多文件夹,其中有一个名为“classes”的文件夹。Flex应用程序需要使用到的Java class就是放到这个文件夹里的

                iv. 还有一个名为“flex”的文件夹,它里面有一个remoting-config.xml,我们要在这个remoting-config.xml文件里添加destination结点来告诉Flex应用程序如何连接上Java class的

2、编写Java类并编译

此处主要是RemoteObject使用

package dcec;

public class HelloWorld {
	public String getHelloWorld(){
		return "Hello world, chen";
	}
}

把编译好的Java类放置在第一步所讲的classes文件夹下。在这里要注意,类的包名也要在classes中建立好相应的文件夹,例如我的如下:

E:\Tomcat 6.0\webapps\blazeds\WEB-INF\classes\dcec\HelloWorld.class

再配置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="helloWorld">
        <properties>
            <source>dcec.HelloWorld</source>
        </properties>
    </destination>


</service>

此时启动Tomcat

3、建立Flex项目

注意红色标注的内容

 在mxml文件中进行如下操作

<?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:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			protected function button1_clickHandler(event:MouseEvent):void
			{
				ro.getHelloWorld();
				
			}
			
			protected function ro_resultHandler(event:ResultEvent):void
			{
				Alert.show(event.result.toString());//在这里也可以使用ro.方法名.lastResult来获得
			}
			
			
			protected function ro_faultHandler(event:FaultEvent):void
			{
				Alert.show("调用失败!");
			}
			
		]]>
	</fx:Script>
	
	<fx:Declarations>
		<s:RemoteObject id="ro" destination="helloWorld" source="dcec.HelloWorld"
						result="ro_resultHandler(event)" fault="ro_faultHandler(event)"/>
	</fx:Declarations>
	<s:Button x="86" y="49" label="按钮" click="button1_clickHandler(event)"/>
	
</s:Application>

单击按钮,获得对话框

大功告成!!!

调用webservice服务。

新建Flex项目,步骤同上。

然后,配置proxy-config.xml文件

如下

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

    <properties>
        <connection-manager>
            <max-total-connections>100</max-total-connections>
            <default-max-connections-per-host>2</default-max-connections-per-host>
        </connection-manager>
        <allow-lax-ssl>true</allow-lax-ssl>
    </properties>

    <adapters>
        <adapter-definition id="http-proxy" class="flex.messaging.services.http.HTTPProxyAdapter" default="true"/>
        <adapter-definition id="soap-proxy" class="flex.messaging.services.http.SOAPProxyAdapter"/>
    </adapters>

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

    <destination id="DefaultHTTP">
    </destination>

    <destination id="ws-catalog">
        <properties>
            <wsdl>http://feeds.adobe.com/webservices/mxna2.cfc?wsdl</wsdl>
            <soap>*</soap>
        </properties>
        <adapter ref="soap-proxy"/>
    </destination>
</service>

mxml主文件如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF">
	
	<mx:WebService id="srv" destination="ws-catalog" useProxy="true" showBusyCursor="true"/>
	
	<mx:DataGrid dataProvider="{srv.getCategories.lastResult}" width="100%" height="100%">
		<mx:columns>
			<mx:DataGridColumn dataField="categoryId" headerText="Category Id"/>
			<mx:DataGridColumn dataField="categoryName" headerText="Category Name"/>
		</mx:columns>
	</mx:DataGrid>
	
	<mx:Button label="Get Data" click="srv.getCategories()"/>
	
</mx:Application>

运行结果

抱歉!评论已关闭.