`
gjs_ht
  • 浏览: 8377 次
  • 性别: 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开发

    jax-ws-webservice开发 通过myeclipse进行 jax-ws的开发及其客户的编写

    wsdl2java源码-CXFDemo:一个关于CXF实现jax-ws规范的webservice

    一个关于CXF实现jax-ws规范的webservice #CXF框架 Apache CXF=Celtix+Xfire.是一个开源的一个webservice,可以与spring无缝集成。支持soap1.1、1.2、RESTtful或者CORBA。 ##使用CXF实现jax-ws规范的webservice ...

    WebService大讲堂之Axis2系列教程

    Axis2是目前比较流行的WebService引擎。...本课程站在初学者角度介绍了Axis2的大多数常用的功能,例如,以多种方式编写和发布WebService、JAX-RPC、JAX-WS、复杂类型传输、WebService会话管理、Axis2模块等

    javascrip调webservice

    javascrip调webservice 在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议...在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对于SOAP消息。

    WebService_JAX_WS.txt

    WebService的上课知识点整理。由上课老师编写的每一个知识点与整合的概要。非常好的整体复习方案, 需要的赶紧下载

    JavaWeb服务【目录版】

    本书以示例驱动的方式详尽地介绍了XML Web服务(JAX-WS)和RESTfulWeb服务(JAX-RS)二者所涵盖的Java相关API。. 《Java Web服务:构建与运行》以清晰、务实的方法讲述Web服务相关技术,提供了混合性的架构总结、...

    用JAXWS2.1+Tomcat+Eclipse+JDK开发WebService客户端

    编写Web 服务客户端访问www.webxml.com.cn里的服务。...(1)在eclipse+tomcat+JAX-WS 2.X平台里开发相应的客户端程序进行测试; (2)开发一个简单网站,用户可以通过访问你的网站来访问 www.webxml.com.cn 里的服务。

    JAVA.WEB服务.构建与运行

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

    BOS技术整理-05

    WebService-WS WS服务独立发布 搭建一个独立的 maven(jar) 服务项目 导入CXF jar 包支持 引入 log4j.properties 文件 @WebService使用类上面,标记类是webservice服务提供对象 @WebMethod使用在方法上面,...

    webservice Axis2教程

    本课程站在初学者角度介绍了Axis2的大多数常用的功能,例如,以多种方式编写和发布WebService、JAX-RPC、JAX-WS、复杂类型传输、WebService会话管理、Axis2模块等。本课程共分为两部分,其中第一部分为Axis2基础知识...

    soap-webservice:使用apace axis1的基于SOAP的Web服务

    肥皂网络服务使用Apache Axis的基于SOAP的Web服务这是一个用Apache Axis和Eclipse IDE Apache Axis编写的非常基本的基于SOAP的Web服务,是JAX-WS的参考实现。

Global site tag (gtag.js) - Google Analytics