概念
JAX-WS2.0的全称Java API for XML-Based Web Service 2.0.JAX-WS2.0是对JAX-RPC1.0规范的扩展,是JAX-RPC1.1的后续版本,JAX-RPC2.0标准发布不久后就被重命名为JAX-WS2.0.
JAX-WS2.0是Sun新的Web service协议栈,是一个完全基于标准实现的。在binding层,使用的是the Java Architecture for XML Binding(JAXB),在parsing层,使用的是the Streaming API for XML(StAX),同时它还完全支持schema规范。
术语
- SEI:Service Endpoint Interface
- JAX:Java API for XML Web Servcie
- JAX-WS RI:JAX-WS Reference Implementation
- SAAJ:SOAP with Attachments API for Java
创建 Web Service方式
JAX-WS 2.0有两种创建Web Service的开发过程:
- 从Java类出发创建Web Service
- 发布Web Service
- 通过wsgen工具,根据发布成功的wsdl生成客户端代码
- 调用客户端代码访问webservice
Eclipse jdk 6.0
package com.zzz.jaxws.service; import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; /** * @description */ @WebService(serviceName = "HelloService", portName = "HelloServicePort", targetNamespace = "http://jaxws.zzz/jaxws/hello") @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) public class HelloService { @WebMethod public String sayHello(String s) { System.out.println("hello," + s); return s; } }
进入工程目录:
mkdir wsdl
wsgen -cp ./bin -r ./wsdl -s ./src -d ./bin -wsdl com.zzz.jaxws.service.HelloService
刷新工程 可以看到
wsdl 下有HelloService.wsdl
或者可以直接使用java代码发布:
package com.zzz.jaxws.service; import javax.xml.ws.Endpoint; import com.zzz.jaxws.service.HelloService; /** * @description 发布HelloService.java为服务 */ public class HelloServicePublisher { public void publish(){ Endpoint.publish("http://localhost:8080/services/HelloService", new HelloService()); } public static void main(String[] args){ HelloServicePublisher publish = new HelloServicePublisher(); publish.publish(); } }
访问: http://localhost:8080/services/HelloService?wsdl
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://jaxws.zzz/jaxws/hello" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://jaxws.zzz/jaxws/hello" name="HelloService"> <types> <xsd:schema> <xsd:import namespace="http://jaxws.zzz/jaxws/hello" schemaLocation="http://localhost:8080/services/HelloService?xsd=1"/> </xsd:schema> </types> <message name="sayHello"> <part name="parameters" element="tns:sayHello"/> </message> <message name="sayHelloResponse"> <part name="parameters" element="tns:sayHelloResponse"/> </message> <portType name="HelloService"> <operation name="sayHello"> <input message="tns:sayHello"/> <output message="tns:sayHelloResponse"/> </operation> </portType> <binding name="HelloServicePortBinding" type="tns:HelloService"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="sayHello"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="HelloService"> <port name="HelloServicePort" binding="tns:HelloServicePortBinding"> <soap:address location="http://localhost:8080/services/HelloService"/> </port> </service> </definitions>
发布成功!
通过wsdl生成客户端代码:
wsimport -keep -p com.zzz.jaxws.service.client http://localhost:8080/services/HelloService?wsdl
刷新工程可以看到
com.zzz.jaxws.service.client目录下有client的代码,copy到src目录下。
package com.zzz.jaxws.service.client; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; /** * @description * @version 创建时间:Apr 3, 2009 9:49:41 AM */ public class HelloServiceClient { private final QName qName=new QName("http://jaxws.zzz/jaxws/hello","HelloService"); public static URL getWSDLURL(String urlStr){ URL url = null; try { url = new URL(urlStr); } catch (MalformedURLException e) { e.printStackTrace(); } return url; } public void process(URL url){ HelloService_Service service = new HelloService_Service(url,qName); HelloService port = service.getHelloServicePort(); String response = port.sayHello("world"); System.out.println("result:"+response); } /** * @param args * @throws MalformedURLException */ public static void main(String[] args) throws MalformedURLException { /* if(args.length!=1){ System.out.println("Please enter parameter."); return; }*/ // URL url = getWSDLURL(args[0]); URL url = new URL("http://localhost:8080/services/HelloService?wsdl"); HelloServiceClient client = new HelloServiceClient(); client.process(url); } }
调用客户段测试代码,看到结果:
result:world
相关推荐
本人自学JAX-WS笔记和简单例子,文档标题结构如下: JAX-WS使用教程 1、JAX-WS概述 2、创建Web Service 2.1 从java开始 2.1.1 运行wsgen 2.1.2 生成的WSDL和XSD 2.1.3 目录结构 2.2 从WSDL开始 2.2.1 ...
自己自学JAX-WS的心得,内含较为详细的讲解了简单的例子。文档目录如下: JAX-WS自学笔记 本人自学JAX-WS笔记和简单例子,文档标题结构如下: JAX-WS使用教程 1、JAX-WS概述 2、创建Web Service 2.1 从java...
JAX-WS发布webservice例子,基于http://blog.csdn.net/yy_love_my/article/details/44938329所说的做的一个简单且能运行的列子,基于maven工程,如果使用servlet发布方式,执行命令:mvn tomcat7:run
webservice部署tomcat简单例子, 使用jax-ws实现,下载后用tomcat部署webserviceServer,运行即可
《Java Web 服务:构建与运行(影印版)》提供了对Java的API的一个全面介绍,包括针对XML Web服务的JAX-WS和针对RESTful Web服务的JAX-RS。《Java Web服务:构建与运行》通过提供混合架构概述、完整的工作代码示例...
Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在...
4 不用在网上找例子,就算找到也运行不了,该课程手把手的教你搭建环境和案例分析 5 该课程还给你提供一套基于ERP的常用架构,让你得到就可以运用到你目前的开发中 6 该课程不仅教你技术知识,还教你在实际开发中...
Java Web服务:构建与运行 作 者: (美)卡林 著,任增刚 译 出 版 社: 电子工业出版社 出版时间: 2009-11-1 目录 前言 第1章 Java Web服务快速入门 1.1 什么是Web服务 1.2 第一个例子 1.3 由Perl和...
Java Web服务:构建与运行 作 者: (美)卡林 著,任增刚 译 出 版 社: 电子工业出版社 出版时间: 2009-11-1 目录 前言 第1章 Java Web服务快速入门 1.1 什么是Web服务 1.2 第一个例子 1.3 由Perl和...
Java Web服务:构建与运行 作 者: (美)卡林 著,任增刚 译 出 版 社: 电子工业出版社 出版时间: 2009-11-1 目录 前言 第1章 Java Web服务快速入门 1.1 什么是Web服务 1.2 第一个例子 1.3 由Perl和...
Java Web服务:构建与运行 作 者: (美)卡林 著,任增刚 译 出 版 社: 电子工业出版社 出版时间: 2009-11-1 目录 前言 第1章 Java Web服务快速入门 1.1 什么是Web服务 1.2 第一个例子 1.3 由Perl和...
Java Web服务:构建与运行 作 者: (美)卡林 著,任增刚 译 出 版 社: 电子工业出版社 出版时间: 2009-11-1 目录 前言 第1章 Java Web服务快速入门 1.1 什么是Web服务 1.2 第一个例子 1.3 由Perl和...
懒惰的CXF关于更快地部署 CXF 客户端... CXF 依赖项被标记为可选(假设您的项目已经依赖于 CXF 的 JAX-RS 和/或 JAX-WS 运行时,如果您正在使用此库)。例子 < bean id = " myServiceFactory " class = " com.vec
1.3 例子 ...........................................................................................................................................................13 1.4 Servlet 与其他技术的比较 .......
...............................................................................................................................13 例子.....................................................................