本文共 2104 字,大约阅读时间需要 7 分钟。
最近接触WebService,听说是一个跨语言,夸操作系统的远程调用。作为一个新手,对各种的概念实在是头大,对于它的什么soup,uddi,wsdl什么的概念的什么东西我们这里就不介绍了,网上有许多,这里我们通过一个实例来初步的认识webservice。
(1)首先创建一个接口和实现类,注意注解和导的包。
package com.Jevin.webservice.demo1;import javax.jws.WebMethod;@javax.jws.WebServicepublic interface WebService { @WebMethod String getAddrByCode(String code);}
package com.Jevin.webservice.demo1.impl;import com.Jevin.webservice.demo1.WebService;@javax.jws.WebServicepublic class WebServiceImpl implements WebService { @Override public String getAddrByCode(String code) { return code+"青阳"; }}
(2)发布你的服务:
package com.Jevin.webservice.demo1;import com.Jevin.webservice.demo1.impl.WebServiceImpl;import javax.xml.ws.Endpoint;public class WebServicePublish { public static void main(String[] args) { //url表示你说发布的服务器地址,http://localhost:8080这个必须是有效的ip和port,后面的webservice自己定义的名称 String url = "http://localhost:8080/webservice"; //将你的服务发布在你做指定的url上: Endpoint.publish(url,new WebServiceImpl()); System.out.println("发布成功!"); }}
(3)启动main方法,在浏览器上输入你所写的url+wsdl,就可访问你的wsdl文件。例如我的是:
这个就是wsdl文件,至于这个文件是什么意思?怎么解读?这里不做介绍,自己查去。
(4)有了wsdl文件,那么我们又如何调用这个服务呢?首先我们需要用到wsimport这个命令,这是jdk自带的命令:
然后使用 wsimport -s D:\file\webservice_craft -keep 命令,这里说明一下,这个是wsdl文件的地址,D:\file\webservice_craft这个是你要讲解析的文件的本地路径;
解析的文件 结构只这样的:
(5)然后将这些文件拷贝到ide中的包中,再调用服务:
package com.jevin.webservice.demo1.impl;import java.net.MalformedURLException;public class TestMain { public static void main(String[] args) throws MalformedURLException { WebServiceImplService factory = new WebServiceImplService(); WebServiceImpl firstWebService = factory.getWebServiceImplPort(); String addr = firstWebService.getAddrByCode("007"); System.out.println(addr); }}
运行结果:
================================================================================================
除了引用到本地本地测试之外,我们还可以借助于一些测试工具测试,非常方便,比如soapUI,官网地址:
整个soapUI的界面是这样的:
我们点击这里:
然后将你的wsdl地址填写在这:
然后左边框就出现这样的界面,里面有你的待测试的方法,点击进去:
在这个界面有你的写的方法,不过是以xml格式呈现的,在<arg0></arg0>标签对中填写你的测试方法参数,然后右边就出现你的返回值<return></return>。
大致上就这些了,这里只谈实战,不谈概念,概念以后整理好了再奉上。。。
转载地址:http://ertvb.baihongyu.com/