`
sunxuetao2010
  • 浏览: 2972 次
  • 性别: 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 webservice简单demo

    在这个"jax-ws webservice简单demo"中,我们将探讨JAX-WS的基础知识、如何创建一个简单的Web服务以及如何测试这个服务。 首先,JAX-WS的核心组件包括: 1. **Service端点接口(SEI, Service Endpoint Interface)**...

    jax-ws 例子

    在这个"jax-ws例子"中,我们有两个主要的组成部分:服务端项目和客户端项目。 1. **服务端项目**: - **TestWebservice**:这是一个Java接口,它定义了Web服务提供的操作或方法。在JAX-WS中,这个接口通常带有`@...

    JAX-WS获取天气预报wsdl

    通过这个例子,我们不仅学习了如何使用JAX-WS与WSDL交互,还理解了Web服务的基本工作原理。这对于开发和集成基于SOAP的Web服务至关重要。在实际项目中,这样的技能可以应用于各种场景,例如集成外部API、构建跨系统...

    Jax-WS的配置方式

    这个例子可以帮助你理解Jax-WS的运作机制和配置过程。 总结,Jax-WS为Java开发者提供了强大且灵活的Web服务开发框架,通过注解或XML配置,可以轻松地创建、部署和消费Web服务。在实际项目中,结合源码分析和实践...

    JAX-WS发布webservice例子

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

    JAX-WS.zip

    5. **检查应用服务器配置**:确保应用服务器的设置允许JAX-WS的运行。比如,在Tomcat中,需要检查`catalina.properties`文件,确保`shared.loader`属性包含了JAX-WS的类路径。 6. **重启应用服务器**:完成上述配置...

    JAX-WS开发部署WebService

    【JAX-WS开发部署WebService】是Web服务开发的一个重要主题,主要涉及到使用Java API for XML Web Services(JAX-WS)创建和部署基于SOAP的Web服务。JAX-WS是一种标准的、Java平台上的API,它使得开发人员能够轻松地...

    jax-ws-webservice开发

    ### JAX-WS WebService开发详解 #### 一、开发环境 为了进行JAX-WS WebService的开发,本文档采用以下开发环境配置: - **操作系统**:Windows XP - **IDE**:MyEclipse 10 - **Web服务器**:Tomcat 7 - **Java版本...

    restful jax-rs

    #### JAX-RS简介与背景 JAX-RS(Java API for RESTful Web Services)作为Java平台上的一个关键API,在Java EE 6中首次被引入。它是一种编程模型,用于创建符合REST(Representational State Transfer)架构风格的...

    webservice-simple-example

    【描述】中的 "jax-ws 与 spring 整合的简单例子" 提到的核心技术是 JAX-WS 和 Spring。JAX-WS 是一种 Java 技术,用于创建和消费 SOAP(Simple Object Access Protocol)Web 服务。它提供了从 Java 类生成 Web 服务...

    ws-exemplo:Glassfish Metro的JAX-WS示例

    描述"ws-例子 Glassfish Metro的JAX-WS示例"进一步确认了这个项目是关于学习和理解如何在Glassfish Metro服务器上运用JAX-WS技术。Glassfish Metro是Oracle提供的一个开源Web服务堆栈,它实现了JAX-WS规范,并且作为...

    WebService例子及其如何部署到tomcat上面

    在这个例子中,我们使用了JWS(Java Web Services),也就是JAX-WS(Java API for XML Web Services)来创建和部署Web服务。JAX-WS是Java平台上的标准,用于构建和消费Web服务,它简化了SOAP消息的处理,提供了与WS-...

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

    在这个例子中,`JAX-WS基于Web容器发布WebService.docx`文档很可能是指导如何使用JAX-WS来创建并发布一个Web服务。 2. **Web服务的创建**: 创建一个Web服务通常涉及定义服务接口、实现服务类以及生成服务端点。服务...

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

    这个简单的例子展示了如何使用JAX-WS和Tomcat创建和部署一个基础的Web服务。在实际项目中,你可能需要处理更复杂的交互、错误处理、安全性设置等。通过理解这些基本概念,你可以进一步扩展Web服务的功能,以满足不同...

    WebService_CXF学习

    JAX-WS(Java API for XML Web Services)是一种用于构建和部署XML Web服务的API,它使得开发者能以简单的方式创建和消费Web服务,无需直接处理SOAP消息。 JAX-WS的核心特性包括: 1. **RPC-oriented or Message-...

    quick-start-jax-rs

    【快速入门JAX-RS】 JAX-RS是Java API for RESTful Web Services的缩写,它是Java平台上的一个标准,用于构建RESTful Web服务。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,...

    java webservice例子.zip

    在Java中实现Web服务主要依靠Java API for XML Processing (JAX-WS) 和 Java API for RESTful Web Services (JAX-RS)。本压缩包文件“java webservice例子.zip”似乎包含了一个示例项目,帮助用户了解如何在Java环境...

    java中jaxws:endpoint webservices笔记

    Java中的JAX-WS(Java API for XML Web Services)是用于创建Web服务和客户端的Java标准,它使得在Java平台上构建和消费Web服务变得更加简单。Endpoint是JAX-WS的一个核心概念,它代表了Web服务的实现,允许我们将...

    使用Eclipse开发基于SpringBoot+JAX-RS的Restful服务.docx

    在这个例子中,它们分别是`springboot.jaxrs`,`RestWS`和`0.0.1-SNAPSHOT`。 - 引入`spring-boot-starter-parent`作为父POM,这样我们可以继承其版本管理和依赖管理。指定其`groupId`和`version`,如`org.spring...

    WebService例子.zip

    不过,这个例子选择使用JAX-WS,可能是为了保持简单,便于初学者理解基础概念。 通过这个例子,你可以学习如何在myEclipse环境中设置项目、编写WebService服务、生成客户端代码以及进行服务调用。同时,也可以对比...

Global site tag (gtag.js) - Google Analytics