Web Service简单开发例子内附源码.docx

上传人:b****5 文档编号:28195724 上传时间:2023-07-09 格式:DOCX 页数:16 大小:259.61KB
下载 相关 举报
Web Service简单开发例子内附源码.docx_第1页
第1页 / 共16页
Web Service简单开发例子内附源码.docx_第2页
第2页 / 共16页
Web Service简单开发例子内附源码.docx_第3页
第3页 / 共16页
Web Service简单开发例子内附源码.docx_第4页
第4页 / 共16页
Web Service简单开发例子内附源码.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

Web Service简单开发例子内附源码.docx

《Web Service简单开发例子内附源码.docx》由会员分享,可在线阅读,更多相关《Web Service简单开发例子内附源码.docx(16页珍藏版)》请在冰豆网上搜索。

Web Service简单开发例子内附源码.docx

WebService简单开发例子内附源码

WebService开发简单了解及应用

1、实验/实习过程

WebService开发1

(1)实验目的

1、通过实验,熟悉SOAP的基本结构与功能;

2、通过实验,掌握WSDL的作用、构成;

3、利用CXF开发WebService;

(2)实验内容及要求

1、安装XML的编辑环境XMLSPY2012,并熟悉XMLSPY的工作环境;

2、通过XMLSPY软件,了解WSDL、SOAP的结构;

①在中选择一个服务(自选),并用XMLSPY软件打开该服务的WSDL文档,观察该文档的结构。

实验过程中我选择的是英汉翻译服务,该EnglishChinese.asmx>wsdl的文档结构如图1:

图1EnglishChinese?

wsdl

②在SOAP菜单中,创建一个选定的WebService的SOAP请求,观察该请求SOAP的结构,并修改调用参数值。

然后向服务器发送请求,并观察服务器返回的响应SOAP文档。

输入WSDL文件位置路径,获得WSDL文档如图2:

图2获取WSDL文档

选择了服务和端口后选择一个SOAP操作,即实现类中的一个具体方法,如图3:

图3选择SOAP操作

SOAP请求文档如图4:

图4SOAP请求文档

SOAP返回文档如图5:

图5SOAP返回文档

(3)利用CXF包,采用代码优先的方式开发WebService。

该服务中包含用来计算两个数的和、差与积的功能。

①源代码见附录1

②XMLSpy2012测试结果

获取服务的WSDL(calculator?

wsdl)文档,如图6:

图6calculator?

wsdl文档

选择操作即具体实现类的方法,如图7:

图7calculator服务提供的方法

SOAP请求文档如图8:

图8SOAP请求文档

SOAP响应文档如图9:

图9SOAP响应文档

③编写客户端程序测试如图10:

图10客户端程序测试calculatorWebService服务

WebService开发2

(1)实验目的

1、通过实验,掌握CXF发布WebServicer的技术;

2、通过实验,掌握CXF开发WebService客户端的方法;

3、通过实验,熟悉VisualStudio中C#语言调用WebService的方法;

(2)实验内容及要求

1、将上次实验中开发的“用来计算两个数的和、差与积的功能”Web服务的基础上,扩展两种运算(自选),并通过CXF的Servlet方式发布到Tomcat上;

通过CXF的Servlet发布到Tomcat如图11:

图11发布到WebService上的服务

服务调用测试如图12:

图12服务调用测试

2、利用CXF包中的wsdl2java工具,生成调用本WebSever的桩代码,并编写代码调用本WebSever的功能来进行计算(要求测试所有的计算功能)。

①源代码见附录2

②桩代码:

Wsdl2java-pClient-dG:

\eclipseWithJDK_WorkSpace\webService1\src\Clienthttp:

//localhost:

8080/calculatorimpl?

wsdl

③根据WSDL文档生成的java客户端程序如图13:

图13客户端java代码

④编写代码测试本服务的所有计算功能如图14:

图14计算功能测试结果

3、在VisualStudio中,编写代码调用本WebSever的功能来进行计算(要求测试所有的计算功能)。

2、实验/实习总结

实验过程中出现了很多问题也学到了很多东西。

首先是关于WebService的开发,WebService开发过程第一步是先编写要发布服务的接口类;第二步根据接口类编写具体的实现类;第三步发布WebService。

在第三步中可以有两种发布方式,首先是JDK直接支持的Endpoint发布方法,还有是CXF支持的Spring集成发布。

需要注意的是Endpoint发布方法JDK可以直接支持但是CXF也可以支持,但是后一种发布方式只能是基于CXF的。

WebService的两种发布方式都可以被客户访问但是区别是JDK支持的发布端口号不能是8080如果放在web工程中需要两个端口号支持,但是基于CXF的发布方式只需要8080端口支持即可。

然后是关于WebService调用的理解。

WebService调用必须有的文档是WSDL文档,可以是本地的也可以是远程访问。

通过wsdl2java工具将WSDL文档转换成java客户端代码,然后利用桩代码编写你需要实现的程序,并且在调用别人写的WebService服务时候要学会看WSDL文档结构。

还有WebService是平台独立的也就是WebService开发的语言可以和客户端程序语言不一致。

附录1基于CXF代码优先方式开发WebService相关源码

(1)服务接口Calculator类:

packagews;

importjavax.jws.WebService;

/*

*描述:

WebService服务接口类

*/

@WebService

publicinterfaceCalculator{

publicintaddition(inta,intb);

publicintsubtraction(inta,intb);

publicintmultiplication(inta,intb);

}

(2)接口实现类CalculatorImpl类:

packagews;

/*

*WebService的具体实现类

*/

publicclassCalculatorImplimplementsCalculator{

@Override

publicintaddition(inta,intb){

//TODOAuto-generatedmethodstub

returna+b;

}

@Override

publicintsubtraction(inta,intb){

//TODOAuto-generatedmethodstub

returna-b;

}

@Override

publicintmultiplication(inta,intb){

//TODOAuto-generatedmethodstub

returna*b;

}

}

(3)服务发布类:

packagews;

importjavax.xml.ws.Endpoint;

/*

*WebService服务

*/

publicclassServer{

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Calculatorservice=newCalculatorImpl();

Stringaddress="http:

//localhost:

8080/calculator";

Endpoint.publish(address,service);

}

}

(4)客户端程序测试类:

packageClient;

importorg.apache.cxf.jaxws.JaxWsProxyFactoryBean;

publicclassClientTest{

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

JaxWsProxyFactoryBeanfactory=newJaxWsProxyFactoryBean();

factory.setServiceClass(Calculator.class);

factory.setAddress("http:

//localhost:

8080/calculator?

wsdl");

Calculatorservice=(Calculator)factory.create();

System.out.println("addition(2,3)");

System.out.println(service.addition(2,3));

System.out.println("subtraction(33,22)");

System.out.println(service.subtraction(33,22));

System.out.println("multiplication(2,3)");

System.out.println(service.multiplication(2,3));

}

}

附录2基于CXF的Servlet发布到tomcat相关源码

(1)服务接口Calculator类:

packagews;

importjavax.jws.WebService;

/*

*描述:

WebService服务接口类

*/

@WebService

publicinterfaceCalculator{

publicintaddition(inta,intb);

publicintsubtraction(inta,intb);

publicintmultiplication(inta,intb);

publicdoubledivision(inta,intb);

publicinttakeOver(inta,intb);

}

(2)接口实现类CalculatorImpl类:

packagews;

importjavax.jws.WebService;

/*

*WebService的具体实现类

*/

@WebService(targetNamespace="http:

//ws/",endpointInterface="ws.Calculator",portName="CalculatorImplPort",serviceName="CalculatorImplService")

publicclassCalculatorImplimplementsCalculator{

@Override

publicintaddition(inta,intb){

//TODOAuto-generatedmethodstub

returna+b;

}

@Override

publicintsubtraction(inta,intb){

//TODOAuto-generatedmethodstub

returna-b;

}

@Override

publicintmultiplication(inta,intb){

//TODOAuto-generatedmethodstub

returna*b;

}

@Override

publicdoubledivision(inta,intb){

//TODOAuto-generatedmethodstub

returna/b;

}

@Override

publicinttakeOver(inta,intb){

//TODOAuto-generatedmethodstub

returna%b;

}

}

(3)Web.xml配置文件

xmlversion="1.0"encoding="UTF-8"?

>

xsi="http:

//www.w3.org/2001/XMLSchema-instance"xmlns="xmlns:

web="xsi:

schemaLocation="id="WebApp_ID"version="2.5">

webService1

index.html

index.htm

index.jsp

default.html

default.htm

default.jsp

ApacheCXFEndpoint

cxf

cxf

org.apache.cxf.transport.servlet.CXFServlet

1

cxf

/services/*

60

contextConfigLocation

WEB-INF/beans.xml

org.springframework.web.context.ContextLoaderListener

(4)beans.xml配置文件

xmlversion="1.0"encoding="UTF-8"?

>

//www.springframework.org/schema/beans"

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"xmlns:

jaxws="http:

//cxf.apache.org/jaxws"

xsi:

schemaLocation="http:

//www.springframework.org/schema/beanshttp:

//www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp:

//cxf.apache.org/jaxwshttp:

//cxf.apache.org/schemas/jaxws.xsd">

META-INF/cxf/cxf.xml"/>

META-INF/cxf/cxf-extension-soap.xml"/>

META-INF/cxf/cxf-servlet.xml"/>

endpointxmlns:

tns="http:

//ws/"id="calculator"

implementor="ws.CalculatorImpl"wsdlLocation="wsdl/calculatorimpl.wsdl"

endpointName="tns:

CalculatorImplPort"serviceName="tns:

CalculatorImplService"

address="/calculatorimpl">

features>

features>

endpoint>

(5)客户端测试类:

packageclient;

importorg.apache.cxf.jaxws.JaxWsProxyFactoryBean;

publicclassClientTest{

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

JaxWsProxyFactoryBeanfactory=newJaxWsProxyFactoryBean();

factory.setServiceClass(Calculator.class);

factory.setAddress("http:

//localhost:

8080/webService1/services/calculatorimpl?

wsdl");

Calculatorservice=(Calculator)factory.create();

System.out.println("addition(2,3)");

System.out.println(service.addition(2,3));

System.out.println("subtraction(33,22)");

System.out.println(service.subtraction(33,22));

System.out.println("multiplication(2,3)");

System.out.println(service.multiplication(2,3));

System.out.println("division(33,11)");

System.out.println(service.division(33,11));

System.out.println("takeover(5,3)");

System.out.println(service.takeOver(5,3));

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1