您的位置:首页 > 编程语言 > Java开发

Flex亲密接触java

2008-09-11 09:45 465 查看
flex和java工程可以集成到一起。但这个动作,至少要下载eclipse的plug-in。我要演示的是在flex builder3中建立独立的flex工程,然后在eclipse里建立独立的webservice服务。两者松散耦合,只需要webservice接口连接。

直接进入主题,看看java的webservice。

定义一个接口和一个实现:

package mars.flex;

public interface ITest {



public String test();

public String sum(int a,int b);

public String sum1(String[] s);



}

package mars.flex;

public class Test implements ITest {

public String sum1(String[] ss) {

int result = 0;

for (String s : ss) {

int n = 0;

try {

n = Integer.parseInt(s);

result += n;

} catch (Exception e) {

}

}

return "the sum is:"+result;

}



public String sum(int a,int b) {

int sum=a+b;

return "the sum is:"+sum;

}

public String test() {

return "java webservice welcome!";

}

}

发布到tomcat下,地址为:http://localhost:8888/ws4flex/services/ws4flex?wsdl

<wsdl:definitions targetNamespace="http://flex.mars">



<wsdl:types>



<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://flex.mars">



<xsd:element name="sum">



<xsd:complexType>



<xsd:sequence>

<xsd:element maxOccurs="1" minOccurs="1" name="in0" type="xsd:int"/>

<xsd:element maxOccurs="1" minOccurs="1" name="in1" type="xsd:int"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>



<xsd:element name="sumResponse">



<xsd:complexType>



<xsd:sequence>

<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>



<xsd:element name="test">

<xsd:complexType/>

</xsd:element>



<xsd:element name="testResponse">



<xsd:complexType>



<xsd:sequence>

<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>



<xsd:complexType name="ArrayOfString">



<xsd:sequence>

<xsd:element maxOccurs="unbounded" minOccurs="0" name="string" nillable="true" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>



<xsd:element name="sum1">



<xsd:complexType>



<xsd:sequence>

<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="tns:ArrayOfString"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>



<xsd:element name="sum1Response">



<xsd:complexType>



<xsd:sequence>

<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:schema>

</wsdl:types>



<wsdl:message name="sumRequest">

<wsdl:part name="parameters" element="tns:sum">

</wsdl:part>

</wsdl:message>



<wsdl:message name="sumResponse">

<wsdl:part name="parameters" element="tns:sumResponse">

</wsdl:part>

</wsdl:message>



<wsdl:message name="sum1Request">

<wsdl:part name="parameters" element="tns:sum1">

</wsdl:part>

</wsdl:message>



<wsdl:message name="testResponse">

<wsdl:part name="parameters" element="tns:testResponse">

</wsdl:part>

</wsdl:message>



<wsdl:message name="sum1Response">

<wsdl:part name="parameters" element="tns:sum1Response">

</wsdl:part>

</wsdl:message>



<wsdl:message name="testRequest">

<wsdl:part name="parameters" element="tns:test">

</wsdl:part>

</wsdl:message>



<wsdl:portType name="ws4flexPortType">



<wsdl:operation name="sum">

<wsdl:input name="sumRequest" message="tns:sumRequest">

</wsdl:input>

<wsdl:output name="sumResponse" message="tns:sumResponse">

</wsdl:output>

</wsdl:operation>



<wsdl:operation name="test">

<wsdl:input name="testRequest" message="tns:testRequest">

</wsdl:input>

<wsdl:output name="testResponse" message="tns:testResponse">

</wsdl:output>

</wsdl:operation>



<wsdl:operation name="sum1">

<wsdl:input name="sum1Request" message="tns:sum1Request">

</wsdl:input>

<wsdl:output name="sum1Response" message="tns:sum1Response">

</wsdl:output>

</wsdl:operation>

</wsdl:portType>



<wsdl:binding name="ws4flexHttpBinding" type="tns:ws4flexPortType">

<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>



<wsdl:operation name="sum">

<wsdlsoap:operation soapAction=""/>



<wsdl:input name="sumRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>



<wsdl:output name="sumResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>



<wsdl:operation name="test">

<wsdlsoap:operation soapAction=""/>



<wsdl:input name="testRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>



<wsdl:output name="testResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>



<wsdl:operation name="sum1">

<wsdlsoap:operation soapAction=""/>



<wsdl:input name="sum1Request">

<wsdlsoap:body use="literal"/>

</wsdl:input>



<wsdl:output name="sum1Response">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>



<wsdl:service name="ws4flex">



<wsdl:port name="ws4flexHttpPort" binding="tns:ws4flexHttpBinding">

<wsdlsoap:address location="http://localhost:8888/ws4flex/services/ws4flex"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

这里定义了三个方法:
test()是最简单的测试通信。sum(int a,int b)测试传入两个参数时,通信问题。sum1(String[] s)测试数组参数是否能被正确传递。

下面,我们来看看flex工程。

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="13">

<mx:Script>

<![CDATA[

import mx.rpc.events.ResultEvent;//引用ResultEvent类

import mx.controls.Alert;//引用Alert类

import Model4ws;

private function wsHandle(e:ResultEvent):void

{

lbl.text=e.result as String;//显示返回数据

}

private function testclk():void{

ws4flex.test.send();

}

private function sumclk():void{

ws4flex.sum.send();

}

private function sum1clk():void{

ws4flex.sum1.send();

}

]]>

</mx:Script>



<mx:Panel title="和java的WebService交互" horizontalAlign="center" verticalAlign="middle" width="433" height="196">

<mx:Label id="given" textAlign="center" width="378" height="24" text=""/>

<mx:Label id="lbl" textAlign="center" width="378" height="24"/>

</mx:Panel>



<mx:WebService id="ws4flex" showBusyCursor="true"

wsdl="http://localhost:8888/ws4flex/services/ws4flex?wsdl"

fault="Alert.show(event.fault.faultString, 'Error')">



<mx:operation name="test" result="wsHandle(event);">

</mx:operation>



<mx:operation name="sum" result="wsHandle(event);">

<mx:request>

<in0>1</in0>

<in1>2</in1>

</mx:request>

</mx:operation>



<mx:operation name="sum1" result="wsHandle(event);">

<mx:request>

<in0>[1,2,3,4,5]</in0>

</mx:request>

</mx:operation>

</mx:WebService>

<mx:Button x="57" y="226" label="test" click="testclk()" fillAlphas="[1.0, 1.0]" fillColors="[#1BD8AE, #1BD8AE]"/>

<mx:Button x="164" y="226" label="sum" click="sumclk()" fillAlphas="[1.0, 1.0]" fillColors="[#305EB3, #305EB3]" color="#BFDEE5"/>

<mx:Button x="281" y="226" label="sum1" click="sum1clk()" borderColor="#E9C935" fillAlphas="[1.0, 1.0]" fillColors="[#F05408, #F05408]"/>

</mx:Application>

mx:WebService 用来定义webservice调用。mx:operation 定义webservice中调用的方法。mx:request 定义该方法需要哪些参数

最后看看效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: