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 定义该方法需要哪些参数
最后看看效果
直接进入主题,看看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 定义该方法需要哪些参数
最后看看效果
相关文章推荐
- 亲密接触Java手机程序设计(一):认识手机程序运行环境――J2ME平台
- Java 10 - 与“var类型推断机制”的第一次亲密接触
- 黑马程序员Java笔记——面向对象的亲密接触
- 亲密接触Java手机程序设计(一):认识手机程序运行环境――J2ME平台
- 亲密接触Java手机程序设计(二):配置手机程序开发环境――WTK
- 亲密接触Java手机程序设计(三):第一个Java手机程序--Hello World
- 与Session的亲密接触&彻底掌握Java中Session Token Cookie
- 与 Java 数组 再次亲密接触
- Android-Java移动GIS开源项目Osmdroid分析手记(一):第一次亲密接触
- [置顶] JAVA学习之路--与JVM的亲密接触
- 亲密接触Java手机程序设计(三):第一个Java手机程序--Hello World
- java基础_day01_Java 第一次亲密接触
- 亲密接触Java手机程序设计(二):配置手机程序开发环境――WTK
- PHP与java的亲密接触!
- flex+blazeds+java后台消息推送(简单示例)
- ActionScript 3.0系列教程(1):与Flash9先来一次亲密接触!
- [转]Flex 项目不能运行jsp文件 java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor
- Java和Flex整合报错(五)
- java连接access数据库初接触和遇到的问题(一)
- 一个remoteobject调用多个java方法(Flex)