`
gjs_ht
  • 浏览: 8714 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

1、jax-ws webservice的编写流程之代码优先

阅读更多

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

    jax-ws发布webservice

    总结,JAX-WS作为Java中的Web服务框架,简化了服务的开发和调用流程。通过定义服务接口,实现服务逻辑,以及使用`Endpoint.publish()`发布服务,我们可以轻松地创建一个基于JAX-WS的Web服务。同时,利用`wsimport`...

    JAX-WS Webservice

    在JAX-WS中,WSDL可以自动生成,也可以手动编写。自动生成的WSDL通常基于服务端点接口(SEI)和实现类。 **6. `jaxws-ri`压缩包** `jaxws-ri`是JAX-WS参考实现的源代码包,包含JAX-WS API的实现以及相关的工具,如...

    JAX-WS WebService简明教程

    ### JAX-WS WebService简明教程知识点梳理 #### 一、JAX-WS概述与特点 ##### 1.1 JAX-WS简介 - **定义**:JAX-WS (Java API for XML-Based Web Services) 是一种用于构建基于XML的Web服务的标准API。 - **历史**:...

    metro-jax-ws-jaxws221x.zip

    3. **WSDL(Web Service Description Language)**:定义服务的接口和消息交换模式,由JAX-WS自动生成或手动编写。 4. **SOAP绑定**:处理客户端与服务器之间的SOAP消息传输。 客户端则利用JAX-WS的`javax.xml.ws....

    jax-ws2.1.zip

    1. **webservices-api.jar** - 这个JAR文件包含了JAX-WS的API接口定义,它定义了开发者用来创建和消费Web服务的类和接口。这些接口包括`javax.jws.WebService`注解,用于标记服务端点,以及`javax.xml.ws.Service`,...

    Jax-ws RI.zip

    开发者可以利用JAX-WS的工具自动生成WSDL文件,或者手动编写。 此外,JAX-WS还提供了一些高级特性,如WS-I Basic Profile兼容性,以确保跨平台互操作性;WS-Security用于安全的Web服务通信;以及WS-...

    设计与开发 JAX-WS 2.0 Web 服务

    1. **选择开发方法**:根据需求和个人偏好选择契约优先或代码优先的开发方法。对于初学者来说,代码优先方法更为直观易懂。 2. **代码优先方法介绍**: - **定义服务接口**:首先定义一个Java接口,该接口代表了...

    java WebService Jax-WS创建

    总结来说,创建Java WebService Jax-WS主要涉及创建项目、编写服务类、生成Web服务,以及在MyEclipse环境中部署和测试。通过这些步骤,开发者可以快速地将Java类转换为可供其他系统调用的Web服务。

    jax-ws 2.0文档说明以及源码

    **Java API for XML Web Services(JAX-WS)2.0**是Java平台上的一个标准,用于构建和消费Web服务。它提供了简化Web服务开发的API,使得开发者能够以更面向对象的方式处理Web服务。本篇文章将深入探讨JAX-WS 2.0的...

    学习JAX-WSWebService开发

    在本教程中,我们将深入探讨JAX-WS的核心概念、开发流程以及如何在MyEclipse集成开发环境中实现Web服务。 首先,让我们理解什么是Web服务。Web服务是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的应用程序,允许...

    gsoap客户端Jax-ws服务端实例

    1. **创建JAX-WS服务**:在MyEclipse中,通过New -&gt; Web Service菜单项创建一个新的Web服务。定义服务接口,使用JAX-WS注解如`@WebService`和`@SOAPBinding`,并实现相应的业务逻辑。 2. **部署服务**:将服务部署...

    jax-ws部署需要的所有包最新版

    JAX-WS允许开发者以面向对象的方式编写Web服务,极大地简化了Web服务的开发流程。在部署基于JAX-WS的Web服务项目时,由于其依赖于多个库和组件,可能会遇到各种异常,因此确保所有必要的包都已包含是非常关键的。 ...

    MyEclipse6.5上基于JAX-WS开发Webservice

    1. JAX-WS(Java API for XML Web Services) JAX-WS 是一种用于构建和部署 Web 服务的 Java API,它在 Java EE 5 及以上版本中被引入,用于替代早期的 JAX-RPC。JAX-WS 提供了更加简洁和面向对象的 API,使得...

    JAX-WS SOAP header设值

    2. **JAX-WS框架**:熟悉JAX-WS提供的接口和类,如`WebServiceProxy`、`WebServiceContext`以及`@WebService`、`@SOAPBinding`等注解。 3. **SOAPHeader和SOAPHeaderElement**:使用`javax.xml.ws.soap.SOAPHeader`...

    Web Service学习小结——基于JDK自带JAX-WS实现的web service

    - 在JAX-WS中,开发者可以使用注解(如`@WebService`、`@SOAPBinding`、`@WebMethod`等)来标记服务接口和方法,这些注解提供了元数据,帮助生成WSDL和客户端代码。 5. **协议和绑定**: - JAX-WS支持多种传输...

    jax-ws jax-rs 分别创建soap和restful类型的webservice

    在提供的文件中,"jax-ws-webService创建soap类型的webservice.docx"应该包含了详细的JAX-WS SOAP Web服务创建过程,而"使用jax-rs创建restful类型的webservice接口.docx"则详细阐述了JAX-RS RESTful Web服务的实现...

    上传一个基于Jax-ws的WebService

    7. **源码和工具**:在标签“源码 工具”中,我们可以理解为JAX-WS的实现不仅依赖于代码编写,还涉及到了一些工具的使用,如`wsimport`,以及IDE中的插件支持,如Eclipse或IntelliJ IDEA中的WS插件。 8. **测试Web...

    MyEclipse中jax-ws开发教程

    在MyEclipse中使用JAX-WS开发Web服务是一个简单而高效的过程,下面将详细介绍这个过程中的关键步骤和涉及的技术点。 首先,JAX-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和消费Web服务...

    myeclipse6.5上基于JAX-WS开发Webservice(中文示例).doc

    1. JAX-WS(Java API for XML Web Services)介绍: JAX-WS 是一种用于创建和消费 Web 服务的标准 API,它基于 SOAP 协议,使用 XML 来交换数据。JAX-WS 提供了更加简化的方式来构建和部署 Web 服务,相比早期的 JAX...

Global site tag (gtag.js) - Google Analytics