客户端与服务端模式,非web端发布

1.1      【Jax-ws第一个例子】

1.1.1     第一步:服务端开发

  1. 编写SEI(Service Endpoint Interface),SEI在webservice中称为portType,在java中称为接口。

代码如下:

/**

* 天气查询服务接口

* @version V1.0

*/

public interface WeatherInterface {

//天气查询

public String queryWeather(String cityName);

}

  1. 编写SEI实现类,此类作为webservice提供服务类

代码如下:

@WebService

public class WeatherInterfaceImpl implements WeatherInterface {

@Override

public String queryWeather(String cityName) {

System.out.println("from client.."+cityName);

String result = "晴朗";

System.out.println("to client..."+result);

return result;

}

public static void main(String[] args) {

//发送webservice服务

Endpoint.publish("http://192.168.1.100:1234/weather", new WeatherInterfaceImpl());

}

}

注意:

SEI实现类中至少要有一个非静态的公开方法需要作为webservice服务方法。

public class 上边要加上@WebService

  1. endpoint发布服务

//发送webservice服务

Endpoint.publish("http://192.168.1.100:1234/weather", new WeatherInterfaceImpl());

1.1.2     第二步:查看wsdl

Webservice发布成功,通过wsdl查看webservice发布的正确性

  1. 在地址栏输入(注意后面的参数?wsdl)

http://192.168.1.100:1234/weather?wsdl

  1. Wsdl不是webService,只是获取一个用于描述WebService的说明文件
  2. wsdl- WebServiceDescriptionLanguage,是以XML文件形式来描述WebService的”说明书”,有了说明书,我们才可以知道如何使用或是调用这个服务.

1.1.3     第三步:Wsimport生成客户端调用类

1.1.3.1              Wsimport介绍

wsimport是jdk自带的webservice客户端工具,可以根据wsdl文档生成客户端调用代码(java代码).当然,无论服务器端的WebService是用什么语言写的,都可以生成调用webservice的客户端代码,服务端通过客户端代码调用webservice。

wsimport.exe位于JAVA_HOME\bin目录下.

常用参数为:

-d<目录>  - 将生成.class文件。默认参数。

-s<目录> - 将生成.java文件。

-p<生成的新包名> -将生成的类,放于指定的包下。

(wsdlurl) - http://server:port/service?wsdl,必须的参数。

示例:

C:/> wsimport –s . http://127.0.0.1:1234/weather?wsdl

注意:-s不能分开,-s后面有个小点

1.1.3.2              客户端生成注意事项:

  1. 可以通过java –version检查你当前的版本号保存是jdk1.6以上。Jdk1.6.0_13以后的版本支持jaxws2.1。
  1. 在Eclipse中创建一个空的java工程为wsimport,此工程作为存放客户端代码。
  2. cmd命令行进入此wsimport 工程的src目录,

输入以下命令:

参数说明:-s是指编译出源代码文件,后面的.(点)指將代码放到当前目录下.

最后面的http….是指获取wsdl说明书的地址.

  1. 生成完成,刷新Eclipse中wsimport工程,将src下生成.java文件代码Copy到webservice客户端工程(见下)中。

1.1.4     第四步:客户端编写

代码如下:

/**

* 天气查询客户端

* @version V1.0

*/

public class WeatherClient {

public static void main(String[] args) {

//创建服务视图

WeatherInterfaceImplService weatherInterfaceImplService =new WeatherInterfaceImplService();

//通过服务视图得到服务端点

WeatherInterfaceImpl weatherInterfaceImpl= weatherInterfaceImplService.getPort(WeatherInterfaceImpl.class);

//调用webservice服务方法

String result = weatherInterfaceImpl.queryWeather("郑州");

System.out.println(result);

}

}

1.1.5     webservice优点

1、采用xml支持跨平台远程调用。

2、基于http的soap协议,可跨越防火墙。

3、支持面向对象开发。

4、有利于软件和数据重用,实现松耦合。

1.1.6     webservice缺点

由于soap是基于xml传输,本身使用xml传输会传输一些无关的东西从而效率不高,随着soap协议的完善,soap协议增加了许多内容,这样就导致了使用soap协议进行数据传输的效率不高。

如果要使用SOAP1.2版本也可,但是测试必须借助第三方,因为jdk不支持根据wsdl(SOAP1.2版本的)生成客户端类,可以使用CXF生成并测试

最新文章

  1. php js数组问题
  2. JAVA 求和程序
  3. 通过配置的方式Autofac 《第三篇》
  4. mac工具收藏
  5. DDD:如何更好的使用值对象
  6. VS2012如何更新下载TFS上面的代码到本地
  7. 更换Oracle备份数据文件
  8. javascript---遇到关于this的相关问题(解决this)(持续更新中...)
  9. 花20分钟写的-大白话讲解如何给github上项目贡献代码
  10. MySQL强化
  11. Treasure Hunt - POJ 1066(线段相交判断)
  12. Android - 直线(line)画法
  13. 《深入理解Java虚拟机》学习笔记之内存分配
  14. 微信小程序点击返回顶层实现方法
  15. Jasperreports以及iReport4.5报表PDF导出字体完美解决方案
  16. BZOJ5326 : [Jsoi2017]博弈
  17. [Swift]LeetCode828. 独特字符串 | Unique Letter String
  18. IDEA更换主题
  19. 2018.07.06 POJ1556 The Doors(最短路)
  20. Linux环境下$开头的相关变量的含义

热门文章

  1. Python-socket发送文件并解决粘包问题
  2. Swift3.0 基础学习梳理笔记(一)
  3. python 基础 列表生成式
  4. linux命令-yum工具详解
  5. 让开发更简单 —— Coding Enterprise 发布
  6. 阶段3-团队合作\项目-网络安全传输系统\sprint1-传输子系统设计\第3课-加密传输优化
  7. svn的revert、checkout、clean up、setting
  8. 5. Python大法之告别脚本小子--各类URL采集器编写
  9. product of大数据平台搭建------CM 和CDH安装
  10. 【mybatis 如何写union和union查询】