之前写webservice程序基本上用axis或xfire,最近的一个项目用到了jax-ws,研究了一下,总结一下内容。webservice的实现一般有两种方式:代码优先和契约优先。所谓的契约优先就是在实现前,先定义一个数据交换格式,这样大家在实现的时候就有统一的规范可依,这对于大系统设计而言是非常必要的;本文先讲述的是代码优先的方式,具体步骤:
1、设计一个webservice的接口
package gjs.text.ws.inter; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; /** * 定义一个webservice接口 * @author gaojingsheng * */ @WebService public interface TestService { /** * 求和 * @param a 加数a * @param b 加数b * @return */ @WebResult(name = "sumResult") public int sum(@WebParam(name = "a") int a, @WebParam(name = "b") int b); /** * 添加一个人,返回被添加的人 * @param person * @return */ @WebResult(name = "person") public Person addPerson(@WebParam(name = "person") Person person); }
这里需要注意的是,你需要熟悉三个annotation:@WebService、@WebResult、@WebParam。@WebService指定服务断点接口(SEI);@WebResult指定返回的结果的包装的元素名称;@WebParam表示封装请求参数的名称
2、实现服务接口(SIB)
package gjs.text.ws.inter; import java.util.ArrayList; import java.util.List; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService(endpointInterface="gjs.text.ws.inter.TestService") public class TestServiceImpl implements TestService{ //先定义一个存储队列 private List<Person> personList = new ArrayList<Person>(); @Override @WebResult(name = "sumResult") public int sum(@WebParam(name = "a") int a, @WebParam(name = "b") int b) { return a+b; } @Override @WebResult(name = "person") public Person addPerson(@WebParam(name = "person") Person person) { this.personList.add(person); return person; } }
3、发布服务
package startService; import javax.xml.ws.Endpoint; import gjs.test.service.MyServiceImpl; /** * 用于启动webservice,启动方式就是用Endpoint的publish方法 * @author gaojingsheng * */ public class StartService { public static void main(String[] args) { //jaxws的发布服务的方式 Endpoint.publish("http://localhost:8889/testService", new TestServiceImpl()); } }
4、看看我们发布效果(wsdl文件)
This XML file does not appear to have any style information associated with it. The document tree is shown below. <!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --> <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://inter.ws.text.gjs/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"targetNamespace="http://inter.ws.text.gjs/" name="TestServiceImplService"> <types> <xsd:schema> <xsd:import namespace="http://inter.ws.text.gjs/" schemaLocation="http://localhost:8889/testService?xsd=1"/> </xsd:schema> </types> <message name="sum"> <part name="parameters" element="tns:sum"/> </message> <message name="sumResponse"> <part name="parameters" element="tns:sumResponse"/> </message> <message name="addPerson"> <part name="parameters" element="tns:addPerson"/> </message> <message name="addPersonResponse"> <part name="parameters" element="tns:addPersonResponse"/> </message> <portType name="TestService"> <operation name="sum"> <input message="tns:sum"/> <output message="tns:sumResponse"/> </operation> <operation name="addPerson"> <input message="tns:addPerson"/> <output message="tns:addPersonResponse"/> </operation> </portType> <binding name="TestServiceImplPortBinding" type="tns:TestService"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="sum"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> <operation name="addPerson"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="TestServiceImplService"> <port name="TestServiceImplPort" binding="tns:TestServiceImplPortBinding"> <soap:address location="http://localhost:8889/testService"/> </port> </service> </definitions>
到此,一个简单的服务就搭建完成了。
相关推荐
在这个"jax-ws webservice简单demo"中,我们将探讨JAX-WS的基础知识、如何创建一个简单的Web服务以及如何测试这个服务。 首先,JAX-WS的核心组件包括: 1. **Service端点接口(SEI, Service Endpoint Interface)**...
总结,JAX-WS作为Java中的Web服务框架,简化了服务的开发和调用流程。通过定义服务接口,实现服务逻辑,以及使用`Endpoint.publish()`发布服务,我们可以轻松地创建一个基于JAX-WS的Web服务。同时,利用`wsimport`...
在JAX-WS中,WSDL可以自动生成,也可以手动编写。自动生成的WSDL通常基于服务端点接口(SEI)和实现类。 **6. `jaxws-ri`压缩包** `jaxws-ri`是JAX-WS参考实现的源代码包,包含JAX-WS API的实现以及相关的工具,如...
### JAX-WS WebService简明教程知识点梳理 #### 一、JAX-WS概述与特点 ##### 1.1 JAX-WS简介 - **定义**:JAX-WS (Java API for XML-Based Web Services) 是一种用于构建基于XML的Web服务的标准API。 - **历史**:...
3. **WSDL(Web Service Description Language)**:定义服务的接口和消息交换模式,由JAX-WS自动生成或手动编写。 4. **SOAP绑定**:处理客户端与服务器之间的SOAP消息传输。 客户端则利用JAX-WS的`javax.xml.ws....
1. **webservices-api.jar** - 这个JAR文件包含了JAX-WS的API接口定义,它定义了开发者用来创建和消费Web服务的类和接口。这些接口包括`javax.jws.WebService`注解,用于标记服务端点,以及`javax.xml.ws.Service`,...
开发者可以利用JAX-WS的工具自动生成WSDL文件,或者手动编写。 此外,JAX-WS还提供了一些高级特性,如WS-I Basic Profile兼容性,以确保跨平台互操作性;WS-Security用于安全的Web服务通信;以及WS-...
1. **选择开发方法**:根据需求和个人偏好选择契约优先或代码优先的开发方法。对于初学者来说,代码优先方法更为直观易懂。 2. **代码优先方法介绍**: - **定义服务接口**:首先定义一个Java接口,该接口代表了...
总结来说,创建Java WebService Jax-WS主要涉及创建项目、编写服务类、生成Web服务,以及在MyEclipse环境中部署和测试。通过这些步骤,开发者可以快速地将Java类转换为可供其他系统调用的Web服务。
**Java API for XML Web Services(JAX-WS)2.0**是Java平台上的一个标准,用于构建和消费Web服务。它提供了简化Web服务开发的API,使得开发者能够以更面向对象的方式处理Web服务。本篇文章将深入探讨JAX-WS 2.0的...
在本教程中,我们将深入探讨JAX-WS的核心概念、开发流程以及如何在MyEclipse集成开发环境中实现Web服务。 首先,让我们理解什么是Web服务。Web服务是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的应用程序,允许...
1. **创建JAX-WS服务**:在MyEclipse中,通过New -> Web Service菜单项创建一个新的Web服务。定义服务接口,使用JAX-WS注解如`@WebService`和`@SOAPBinding`,并实现相应的业务逻辑。 2. **部署服务**:将服务部署...
JAX-WS允许开发者以面向对象的方式编写Web服务,极大地简化了Web服务的开发流程。在部署基于JAX-WS的Web服务项目时,由于其依赖于多个库和组件,可能会遇到各种异常,因此确保所有必要的包都已包含是非常关键的。 ...
1. JAX-WS(Java API for XML Web Services) JAX-WS 是一种用于构建和部署 Web 服务的 Java API,它在 Java EE 5 及以上版本中被引入,用于替代早期的 JAX-RPC。JAX-WS 提供了更加简洁和面向对象的 API,使得...
2. **JAX-WS框架**:熟悉JAX-WS提供的接口和类,如`WebServiceProxy`、`WebServiceContext`以及`@WebService`、`@SOAPBinding`等注解。 3. **SOAPHeader和SOAPHeaderElement**:使用`javax.xml.ws.soap.SOAPHeader`...
- 在JAX-WS中,开发者可以使用注解(如`@WebService`、`@SOAPBinding`、`@WebMethod`等)来标记服务接口和方法,这些注解提供了元数据,帮助生成WSDL和客户端代码。 5. **协议和绑定**: - JAX-WS支持多种传输...
在提供的文件中,"jax-ws-webService创建soap类型的webservice.docx"应该包含了详细的JAX-WS SOAP Web服务创建过程,而"使用jax-rs创建restful类型的webservice接口.docx"则详细阐述了JAX-RS RESTful Web服务的实现...
7. **源码和工具**:在标签“源码 工具”中,我们可以理解为JAX-WS的实现不仅依赖于代码编写,还涉及到了一些工具的使用,如`wsimport`,以及IDE中的插件支持,如Eclipse或IntelliJ IDEA中的WS插件。 8. **测试Web...
在MyEclipse中使用JAX-WS开发Web服务是一个简单而高效的过程,下面将详细介绍这个过程中的关键步骤和涉及的技术点。 首先,JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和消费Web服务...
1. JAX-WS(Java API for XML Web Services)介绍: JAX-WS 是一种用于创建和消费 Web 服务的标准 API,它基于 SOAP 协议,使用 XML 来交换数据。JAX-WS 提供了更加简化的方式来构建和部署 Web 服务,相比早期的 JAX...