JAX-WS全称Java™ API for XML Web Services,是随着JDK1.6及其后续版本发布的方便Java程序员开发WebService应用的一组API,通常简称为JWS,目前版本为2.x。

使用JAX-WS编写WebService非常简单,下面介绍WebService服务端及客户端实现。

一、开发WebService服务端

1.Web服务的接口称为SEI,我们首先要用定义一个接口HelloWorld,使用@WebService注解修饰接口名,使用@WebParam修饰需要对外发布的方法,代码如下:

package com.csdn.jaxws.recipe01;

import javax.jws.WebMethod;
import javax.jws.WebService; @WebService
public interface HelloWorld {
@WebMethod
String sayHello(String text);
}

2.WEB服务接口的实现类称为SIB,接下来我们需要实现HelloWorld接口:

package com.csdn.jaxws.recipe01;

import javax.jws.WebService;

@WebService(endpointInterface = "com.csdn.jaxws.recipe01.HelloWorld")
public class HelloWorldImpl implements HelloWorld { @Override
public String sayHello(String name) {
return "hello," + name;
} }

3.服务接口和实现类已经编写完成,接着需要编写发布类HelloWorldService:

package com.csdn.jaxws.recipe01;

import javax.xml.ws.Endpoint;

public class HelloWorldService {
public static void main(String[] args) {
HelloWorld hw = new HelloWorldImpl();
Endpoint.publish("http://localhost:9089/service/HelloWorld", hw);
}
}

4.编译运行HelloWorldService 类,如果控制台没有错误信息,说明我们的WebService已经发布成功。

5.每个WebService都会有一个与之对应的WSDL文档,我们可以在WebService的URL后追加?WSDL查看,打开浏览器输入http://localhost:9089/service/HelloWorld?wsdl,可以查看wsdl文档。

二、WebService客户端编写

WebService的客户端调用通常有两种,第一种使用RPC方式,第二种是使用JDK自带的wsimport工具生成客户端代码,使用这种方式较为简单,就像是在本地直接调用服务端代码一样。

下面介绍如何使用wsimport生成客户端代码,并实现webservice调用。

1.新建一个eclipse工程,使用控制台进入工程的src目录,输入:

wsimport -keep http://localhost:9089/service/HelloWorld?wsdl

工具执行完毕后生成客户端代码如下:



2.编写客户端调用代码Recipe01Client:

package com.csdn.jaxws.recipe01.client;

import com.csdn.jaxws.recipe01.HelloWorldImpl;
import com.csdn.jaxws.recipe01.HelloWorldImplService; public class Recipe01Client {
public static void main(String[] args) {
//创建HelloWorldImplService对象
HelloWorldImplService hws = new HelloWorldImplService();
//通过getHelloWorldImplPort方法获取HelloWorldImpl实例
HelloWorldImpl hw = hws.getHelloWorldImplPort();
//使用HelloWorldImpl实例,像直接调用服务端方法一样,调用Web服务,获取WebService响应数据
String retVal = hw.sayHello("Jone");
System.out.println(retVal); }
}

你可以已经猜到,运行程序控制台输出:hello,Jone

最新文章

  1. vim 标签命令
  2. AX2012 引用NOPI 添加图片到EXCEL
  3. [异常解决] MPU6050启动异常读出陀螺仪和加速度计的值全为0的解决办法
  4. APPCAN MAS接口之AJAX
  5. sp_getTable_data
  6. 由href return false 来看阻止默认事件
  7. Linux find运行机制详解
  8. idea 给maven项目添加依赖(二)
  9. BUG-‘Tokenizer’ object has no attribute ‘oov_token’
  10. 记录下mainfest.json 原生标题的按钮监听
  11. Logstash利用ruby将有用的日志放到一个ES_INDEX将无用的日志放到另一个ES_INDEX
  12. Tembin
  13. zombodb 配置设置
  14. Codeforces 797B - Odd sum
  15. Android常用库和插件
  16. post提交方式
  17. oracle事务知识点小结
  18. python开发_python日期操作
  19. iOS开发之--使用storyboard进行跳转
  20. C# 删除文件以及文件夹

热门文章

  1. Watir 简化日常工作实例
  2. bzoj4006
  3. JAVA中的BIO,NIO,AIO
  4. 一、使用 BeautifulSoup抓取网页信息信息
  5. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>
  6. POJ 3658 Artificial Lake (单调栈)
  7. CodeForces - 377A Maze BFS逆思维
  8. 洛谷 - SP3871 GCDEX - GCD Extreme - 莫比乌斯反演
  9. MFC控件:listctrl使用方法总结
  10. 算法学习--Day9