`
sunxuetao2010
  • 浏览: 2817 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

JAX-WS 简单可运行例子简介

    博客分类:
  • java
 
阅读更多

 

概念

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笔记和简单例子,文档标题结构如下: 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 ...

    WebService之JAX-WS自学笔记

    自己自学JAX-WS的心得,内含较为详细的讲解了简单的例子。文档目录如下: JAX-WS自学笔记 本人自学JAX-WS笔记和简单例子,文档标题结构如下: JAX-WS使用教程 1、JAX-WS概述 2、创建Web Service 2.1 从java...

    JAX-WS发布webservice例子

    JAX-WS发布webservice例子,基于http://blog.csdn.net/yy_love_my/article/details/44938329所说的做的一个简单且能运行的列子,基于maven工程,如果使用servlet发布方式,执行命令:mvn tomcat7:run

    webservice部署tomcat简单例子(客户端和服务端)

    webservice部署tomcat简单例子, 使用jax-ws实现,下载后用tomcat部署webserviceServer,运行即可

    JAVA.WEB服务.构建与运行

     《Java Web 服务:构建与运行(影印版)》提供了对Java的API的一个全面介绍,包括针对XML Web服务的JAX-WS和针对RESTful Web服务的JAX-RS。《Java Web服务:构建与运行》通过提供混合架构概述、完整的工作代码示例...

    WebSer之CXF框架例子.docx

    Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在...

    基于SpringSecurity3.x, JasperReport5.x等技术实现仿金蝶权限管理的企业信息管理系统

    4 不用在网上找例子,就算找到也运行不了,该课程手把手的教你搭建环境和案例分析 5 该课程还给你提供一套基于ERP的常用架构,让你得到就可以运用到你目前的开发中 6 该课程不仅教你技术知识,还教你在实际开发中...

    Java Web服务构建与运行(高清中文版).part1.rar

    Java Web服务:构建与运行 作 者: (美)卡林 著,任增刚 译 出 版 社: 电子工业出版社 出版时间: 2009-11-1 目录 前言 第1章 Java Web服务快速入门  1.1 什么是Web服务  1.2 第一个例子  1.3 由Perl和...

    Java Web服务构建与运行(高清中文版).part2.rar

    Java Web服务:构建与运行 作 者: (美)卡林 著,任增刚 译 出 版 社: 电子工业出版社 出版时间: 2009-11-1 目录 前言 第1章 Java Web服务快速入门  1.1 什么是Web服务  1.2 第一个例子  1.3 由Perl和...

    Java Web服务构建与运行(高清中文版).part5.rar

    Java Web服务:构建与运行 作 者: (美)卡林 著,任增刚 译 出 版 社: 电子工业出版社 出版时间: 2009-11-1 目录 前言 第1章 Java Web服务快速入门  1.1 什么是Web服务  1.2 第一个例子  1.3 由Perl和...

    Java Web服务构建与运行(高清中文版).part3.rar

    Java Web服务:构建与运行 作 者: (美)卡林 著,任增刚 译 出 版 社: 电子工业出版社 出版时间: 2009-11-1 目录 前言 第1章 Java Web服务快速入门  1.1 什么是Web服务  1.2 第一个例子  1.3 由Perl和...

    Java Web服务构建与运行(高清中文版).part4.rar

    Java Web服务:构建与运行 作 者: (美)卡林 著,任增刚 译 出 版 社: 电子工业出版社 出版时间: 2009-11-1 目录 前言 第1章 Java Web服务快速入门  1.1 什么是Web服务  1.2 第一个例子  1.3 由Perl和...

    cxf-lazy-clients:更快地部署 CXF 客户端

    懒惰的CXF关于更快地部署 CXF 客户端... CXF 依赖项被标记为可选(假设您的项目已经依赖于 CXF 的 JAX-RS 和/或 JAX-WS 运行时,如果您正在使用此库)。例子 &lt; bean id = " myServiceFactory " class = " com.vec

    Java™ Servlet 规范.

    1.3 例子 ...........................................................................................................................................................13 1.4 Servlet 与其他技术的比较 .......

    Servlet3.1规范(最终版) PDF

    ...............................................................................................................................13 例子.....................................................................

Global site tag (gtag.js) - Google Analytics