WebService技术,服务端and客户端JDK-wsimport工…

2019-03-10 11:50:44来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

使用webservice服务,需要了解几个名词:soap 简单对象协议、http+xml 、 WSDL  

先看下代码结构:

 

 

服务端代码与客户端代码分别处于两不同的包中

一、服务端内容

服务端:

@WebService注解,表明这个一个对外提供为webservice的服务类。

@WebMethod注解,表明这是webservice中的一个可以调用的方法。

还可以设置其他注解,(注解会在wsdl文档中体现出来)。

WebServiceImp.java代码:
 1 package com.webservice;
 2 
 3 import javax.jws.WebMethod;
 4 import javax.jws.WebService;
 5 import javax.xml.ws.Endpoint;
 6 @WebService
 7 public class WebServiceImp {
 8     @WebMethod
 9     public String getInfo(String id){
10         String info="";
11         if (id.equals("1")) {
12             info="张三";
13         }else if (id.equals("2")) {
14             info="李四";
15         }else if(id.equals("3")){
16             info="王五";
17         }else if(id.equals("4")) {
18             info="赵六";
19         }else {
20             info="用户不存在";
21         }
22         return info;
23     }
24     public static void main(String[] args) {
25         Endpoint.publish("http://127.0.0.1:8080/WebService", new WebServiceImp());
26     }
27 }

      1、 在main方法中使用   Endpoint.publish(url,object)来发布wsdl.代码中发布webservice的地址是:http://127.0.0.1:8080/WebService,把地址复制到浏览器地址栏我们在后面加上?wsdl,可以看到如下内容:

 

 

 2、此时证明webservice已经发布成功。

发布成功后,使用软件测试,是否请求访问得到结果。此处使用SoapUI Pro ,图形化界面,容易测试,新建项目,项目名称随意,inital wsdl:填入在代码生成的地址

(http://127.0.0.1:8080/WebService?wsdl)。填入参数,点击绿色的三角形发送请求,右边出现拿到结果,说明此webservice是可用的,至此,服务端完成。

 

 

 

 

 

 二、客户端内容

 1、使用jdk自带的工具,能够生成客户端代码。找到安装JDK的bin目录,就可以看到所使用的工具

wsimport的常用命令有:

①. -d <directory>
   在指定的目录生成class文件
②. -clientjar <jarfile>
   在当前目录生成jar文件,结合-d <directory>可以在指定的目录生成jar文件
③. -s <directory>
   在指定的目录生成java源文件
④. -p <pkg>
   指定生成文件的包结构
⑤. -keep
   在生成class文件,或者jar包时,同时保留java源文件
 
2、打开cmd命令行进入到src的目录下,执行生成代码命令

 

3、看到已经生成了java和class文件,回到开发工具刷新一下,可以看到刚才生成的Java文件,

 

 4、看wsdl文档的时候,最好是从下往上看,这样会比较清晰一点。wsimport根据wsdl文档内容生成代码,使用生成的代码,编写客户端代码,新建一个MyClient.java 

 1 package webservice;
 2 
 3 public class WebClient {
 4     public static void main(String[] args) {
 5         ServiceIntService serviceIntService=new ServiceIntService();
 6         ServiceInt ServiceInt =serviceIntService.getServiceIntPort();
 7         System.out.println(ServiceInt.getInfo("1"));
 8         System.out.println(ServiceInt.getInfo("2"));
 9         System.out.println(ServiceInt.getInfo("4"));
10         System.out.println(ServiceInt.getInfo("100"));
11     }
12 }

 

5、运行MyClient,看到调用服务端的提供的服务,返回结果。


原文链接:https://www.cnblogs.com/hyblogs/p/10439233.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:拼多多、饿了么、蚂蚁金服Java面试题大集合

下一篇:从一笔金币充值去思考分布式事务