Java WebService接口生成和调用 图文详解

webservice简介: 
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制

一、 WebService生成

1.在eclipse或myclipse新建一个Web项目,并新建一个class类,用于发布; 
这里写图片描述

2.编写供客户端调用的方法,即编译方法代码; 
示例:

1import javax.jws.WebMethod; 2import javax.jws.WebService; 3import javax.xml.ws.Endpoint; 4 5/** 6* Title: ServiceHello 7* Description: 基于jdk1.6以上的javax.jws 发布webservice接口 8 @WebService - 它是一个注解,用在类上指定将此类发布成一个ws。 9 Endpoint – 此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解 10 对象绑定到一个地址的端口上。 11* Version:1.0.0 12* @author panchengming 13 */ 14@WebService 15public class JwsServiceHello { 16 17 /** 供客户端调用方法 该方法是非静态的,会被发布 18 * @param name 传入参数 19 * @return String 返回结果 20 * */ 21 public String getValue(String name){ 22 return "欢迎你! "+name; 23 } 24 25 /** 26 * 方法上加@WebMentod(exclude=true)后,此方法不被发布; 27 * @param name 28 * @return 29 */ 30 @WebMethod(exclude=true) 31 public String getHello(String name){ 32 return "你好! "+name; 33 } 34 35 /** 静态方法不会被发布 36 * @param name 37 * @return 38 */ 39 public static String getString(String name){ 40 return "再见!"+name; 41 } 42 43 44 //通过EndPoint(端点服务)发布一个WebService 45 public static void main(String[] args) { 46 /*参数:1,本地的服务地址; 47 2,提供服务的类; 48 */ 49 Endpoint.publish("http://192.168.1.105:8080/Service/ServiceHello", new JwsServiceHello()); 50 System.out.println("发布成功!"); 51 //发布成功后 在浏览器输入 http://192.168.1.105:8080/Service/ServiceHello?wsdl 52 } 53}

3.进行编译运行(注:失败检查jdk版本) 
这里写图片描述 
4.将所设地址加上?wsdl到浏览器上访问,如出现XML格式代码,则发布成功,反之,则否;(url: http://192.168.1.105:8080/Service/ServiceHello?wsdl
这里写图片描述

二、WebService调用方法

生成代码方式一

1.新建一个class类,用于调用webservice。右键src,找到Web Service Client,并输入wsdl地址,选择下载代码的路径;(url: http://192.168.1.105:8080/Service/ServiceHello?wsdl
这里写图片描述 
这里写图片描述 
这里写图片描述 
2.将地址上的文件下载下来(注意和发布JDK一致); 
3.写调用方法调用下载下来的WebService中的java类中的方法; 
示例:

1import com.pcm.ws.jws.JwsServiceHello; 2import com.pcm.ws.jws.JwsServiceHelloService; 3 4/** 5 * 6* Title: JwsClientHello 7* Description: webService 客户端调用 8* Version:1.0.0 9* @author panchengming 10 */ 11public class JwsClientHello { 12 13 public static void main(String[] args) { 14 //调用webservice 15 JwsServiceHello hello=new JwsServiceHelloService().getJwsServiceHelloPort(); 16 String name=hello.getValue("panchengming"); 17 System.out.println(name); 18 } 19}

这里写图片描述

生成代码方式二 
1.创建Web Service Project,命名为TheClient。 
2.在dos命令下输入 wsimport -s “src目录” -p “生成类所在包名” -keep “wsdl发布地址” 
示例:wsimport -s G:\workspace\webService\webService_Project\src -p com.pcm.ws.jws -keep http://192.168.1.105:8080/Service/ServiceHello?wsdl 
3.成功则返回 parsing WSDL… 
generating code… 
compiling code… 
4.刷新项目,生成类; 
5,写调用方法(同上);

三、总结:

如何发布一个Web服务: 
a,在类上添加@WebService注解 
(注:此注解是jdk1.6提供的,位于javax.jws.WebService包中) 
b,通过EndPoint(端点服务)发布一个WebService 
(注:EndPoint是jdk提供的一个专门用于发布服务的类,该类的publish方法接收两个参数,一个是本地的服务地址,二是提供服务的类。位于 javax.xml.ws.Endpoint包中) 
c,注: 
类上添加注解@WebService,类中所有非静态方法都会被发布; 
静态方法和final方法不能被发布; 
方法上加@WebMentod(exclude=true)后,此方法不被发布;

该demo我放在github上了,https://github.com/xuwujing/webservice_project。 有兴趣的可以看看。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )