WebService学习笔记(一)
1、WebService简介 WebService是一种面向服务的架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。 根据W3C的定义,Web服务(Web service)应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序接口(API)所组成的,它们透过网络,例如国际互联网(Internet)的远程服务器端,执行客户所提交服务的请求。 尽管W3C的定义涵盖诸多相异且无法介分的系统,不过通常我们指有关于主从式架构(Client-server)之间根据SOAP协议进行传递XML格式消息。无论定义还是实现,WEB服务过程会由服务器提供一个机器可读的描述(通常基于WSDL)以辨别服务器所提供的WEB服務。另外,虽然WSDL不是SOAP服务端点的必要条件,但目前基于Java的主流WEB服务开发框架往往需要WSDL实现客户端的源代码生成。一些工业标准化组织,比如WS-I,就在WEB服务定义中强制包含SOAP和WSDL。 2、WebService相关注解 根据JSR 181规范,WebService 常用到的注解包括@WebService,@WebMethod,@WebParam,@WebResult,@HandlerChain等。 @WebService 用来标注PortType实现类或PortType接口。常用属性如下:
@WebMethod 用来标注服务提供的方法。
@WebParam 用来标注提供服务的具体方法的参数。
@WebResult 用来标注服务提供方法的返回值;
@HandlerChain 用来标注WebService服务器端使用到的handler。
此处只是简要的总结下,具体的详情请参看: JAX-WS 注释? http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.wsfep.multiplatform.doc%2Finfo%2Fae%2Fae%2Frwbs_jaxwsannotations.html 3、WebService开发步骤 下面以JDK6.0自带的JWX-WS为例,讲述开发一个HelloWorld的示例; A) 服务器端程序 i)生成WebService注释类。 package org.study.service; import javax.jws.WebParam; import javax.jws.WebService; @WebService public class HelloWorld { /** * 输入用户名称,返回对用户的问候。 * * @param name 用户名称 * @return 问候语句 */ public String sayHello(@WebParam(name="name")String name){ return "welcome "+name+",to web-service world!"; } }生成WebService实现类。 ii)发布WebService接口。 package org.study.service.publisher; import javax.xml.ws.Endpoint; import org.study.service.HelloWorld; public class ServicePublisher { ?? ? ?? ?/** ?? ? * @param args ?? ? */ ?? ?public static void main(String[] args) { ?? ??? ?System.out.println("====正在启动Service服务器程序===="); ?? ??? ?Endpoint.publish("http://localhost/service/helloWorld",new HelloWorld()); ?? ??? ?System.out.println("====Service服务器启动完成====="); ?? ??? ?System.out.println("可以通过地址 [http://localhost/service/helloWorld?wsdl]访问服务相关描述信息!"); ?? ?} }运行这个Publisher程序,发布WebService,可以访问 http://localhost/service/helloWorld?wsdl访问服务描述信息。 B)客户端程序 i) 根据WSDL描述信息生成WebService访问接口 新建Java工程helloWorldServiceClient,在源文件夹src下,新建importWs.bat内容如下: # 根据wsdl生成相关的service文件 wsimport -s . -d ../bin http://localhost/service/helloWorld?wsdl 然后运行: 生成相关的service java文件和class文件。 注意: 运行importWs.bat之前,需已经运行Service服务端程序。 即http://localhost/service/helloWorld?wsdl可访问。 ii) 编写客户端代码: package org.study.service.client; import org.study.service.HelloWorld; import org.study.service.HelloWorldService; public class HelloWorldClient { public static void main(String[] args){ HelloWorldService service = new HelloWorldService(); HelloWorld portType = service.getHelloWorldPort(); // invoke service method String welcomeStr = portType.sayHello("Walker Jong"); System.out.println(welcomeStr); } } 执行客户端代码,即可访问service; 源代码: helloWorldServiceServer.rar helloWorldServiceClient.rar 参考文献: 1、 Web服务中文wiki?? http://zh.wikipedia.org/zh/Web%E6%9C%8D%E5%8A%A1 2、JAX-WS 注释? http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=%2Fcom.ibm.websphere.wsfep.multiplatform.doc%2Finfo%2Fae%2Fae%2Frwbs_jaxwsannotations.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用Scala作为Eclipse的脚本语言
- 如何做好正式交付使用前的项目演示
- bootstrap导入JavaScript插件
- KornShell(ksh)调度算法(SRT)
- 当reloadOnSearch为false时,$location.search上的AngularJs
- 客户端调用WebService方式总结
- WebService大讲堂之Axis2(10):使用soapmonitor模块监视soa
- 如何使用Jasmine为私有方法编写Angular / TypeScript单元测
- angularjs – ng-tags-input,如何禁用用户输入?
- angularjs – chai-as-promise测试不适用于$q promises