概念
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的基础知识、如何创建一个简单的Web服务以及如何测试这个服务。 首先,JAX-WS的核心组件包括: 1. **Service端点接口(SEI, Service Endpoint Interface)**...
在这个"jax-ws例子"中,我们有两个主要的组成部分:服务端项目和客户端项目。 1. **服务端项目**: - **TestWebservice**:这是一个Java接口,它定义了Web服务提供的操作或方法。在JAX-WS中,这个接口通常带有`@...
通过这个例子,我们不仅学习了如何使用JAX-WS与WSDL交互,还理解了Web服务的基本工作原理。这对于开发和集成基于SOAP的Web服务至关重要。在实际项目中,这样的技能可以应用于各种场景,例如集成外部API、构建跨系统...
这个例子可以帮助你理解Jax-WS的运作机制和配置过程。 总结,Jax-WS为Java开发者提供了强大且灵活的Web服务开发框架,通过注解或XML配置,可以轻松地创建、部署和消费Web服务。在实际项目中,结合源码分析和实践...
JAX-WS发布webservice例子,基于http://blog.csdn.net/yy_love_my/article/details/44938329所说的做的一个简单且能运行的列子,基于maven工程,如果使用servlet发布方式,执行命令:mvn tomcat7:run
5. **检查应用服务器配置**:确保应用服务器的设置允许JAX-WS的运行。比如,在Tomcat中,需要检查`catalina.properties`文件,确保`shared.loader`属性包含了JAX-WS的类路径。 6. **重启应用服务器**:完成上述配置...
【JAX-WS开发部署WebService】是Web服务开发的一个重要主题,主要涉及到使用Java API for XML Web Services(JAX-WS)创建和部署基于SOAP的Web服务。JAX-WS是一种标准的、Java平台上的API,它使得开发人员能够轻松地...
### JAX-WS WebService开发详解 #### 一、开发环境 为了进行JAX-WS WebService的开发,本文档采用以下开发环境配置: - **操作系统**:Windows XP - **IDE**:MyEclipse 10 - **Web服务器**:Tomcat 7 - **Java版本...
#### JAX-RS简介与背景 JAX-RS(Java API for RESTful Web Services)作为Java平台上的一个关键API,在Java EE 6中首次被引入。它是一种编程模型,用于创建符合REST(Representational State Transfer)架构风格的...
【描述】中的 "jax-ws 与 spring 整合的简单例子" 提到的核心技术是 JAX-WS 和 Spring。JAX-WS 是一种 Java 技术,用于创建和消费 SOAP(Simple Object Access Protocol)Web 服务。它提供了从 Java 类生成 Web 服务...
描述"ws-例子 Glassfish Metro的JAX-WS示例"进一步确认了这个项目是关于学习和理解如何在Glassfish Metro服务器上运用JAX-WS技术。Glassfish Metro是Oracle提供的一个开源Web服务堆栈,它实现了JAX-WS规范,并且作为...
在这个例子中,我们使用了JWS(Java Web Services),也就是JAX-WS(Java API for XML Web Services)来创建和部署Web服务。JAX-WS是Java平台上的标准,用于构建和消费Web服务,它简化了SOAP消息的处理,提供了与WS-...
在这个例子中,`JAX-WS基于Web容器发布WebService.docx`文档很可能是指导如何使用JAX-WS来创建并发布一个Web服务。 2. **Web服务的创建**: 创建一个Web服务通常涉及定义服务接口、实现服务类以及生成服务端点。服务...
这个简单的例子展示了如何使用JAX-WS和Tomcat创建和部署一个基础的Web服务。在实际项目中,你可能需要处理更复杂的交互、错误处理、安全性设置等。通过理解这些基本概念,你可以进一步扩展Web服务的功能,以满足不同...
JAX-WS(Java API for XML Web Services)是一种用于构建和部署XML Web服务的API,它使得开发者能以简单的方式创建和消费Web服务,无需直接处理SOAP消息。 JAX-WS的核心特性包括: 1. **RPC-oriented or Message-...
【快速入门JAX-RS】 JAX-RS是Java API for RESTful Web Services的缩写,它是Java平台上的一个标准,用于构建RESTful Web服务。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,...
在Java中实现Web服务主要依靠Java API for XML Processing (JAX-WS) 和 Java API for RESTful Web Services (JAX-RS)。本压缩包文件“java webservice例子.zip”似乎包含了一个示例项目,帮助用户了解如何在Java环境...
Java中的JAX-WS(Java API for XML Web Services)是用于创建Web服务和客户端的Java标准,它使得在Java平台上构建和消费Web服务变得更加简单。Endpoint是JAX-WS的一个核心概念,它代表了Web服务的实现,允许我们将...
在这个例子中,它们分别是`springboot.jaxrs`,`RestWS`和`0.0.1-SNAPSHOT`。 - 引入`spring-boot-starter-parent`作为父POM,这样我们可以继承其版本管理和依赖管理。指定其`groupId`和`version`,如`org.spring...
不过,这个例子选择使用JAX-WS,可能是为了保持简单,便于初学者理解基础概念。 通过这个例子,你可以学习如何在myEclipse环境中设置项目、编写WebService服务、生成客户端代码以及进行服务调用。同时,也可以对比...