webservice服务端和客户端编程:基于jws

来源:互联网 发布:深圳网络推广工资标准 编辑:程序博客网 时间:2024/06/05 15:02

webservice是一种跨语言,跨平台,跨防火墙的远程调用技术。webservice的主要组成是wsdl(webservice defination language) 和soap(simple object access protocol)两部分组成。wsdl描述发布的webservice,soap是基于http和xml实现的,http是一种可以跨防火墙的协议,xml给webservice提供了良好的跨语言性。下面开始webservice的开发,这个webservice的发布了一个接口用于10进制向二进制的转换。

一。服务端开发
1.建立一个javaproject,定义一个接口并实现它,写一个发布类。如下图:
这里写图片描述

其中三个类的代码如下:
1.接口

package com.txx.service;public interface DecimalToBinary {    public String transfrom(int decimal);//将十进制的数转换为二进制}

2.实现类

package com.txx.service.impl;import javax.jws.WebService;import com.txx.service.DecimalToBinary;@WebServicepublic class DecimalToBinaryImpl implements DecimalToBinary {    @Override    public String transfrom(int decimal) {        StringBuilder b= new StringBuilder();        while(decimal!=0){            String temp = decimal%2==0?"0":"1";            b.append(temp);            decimal /=2;        }        return b.reverse().toString();    }}

3.发布类

package com.txx.service.test;import javax.xml.ws.Endpoint;import com.txx.service.impl.DecimalToBinaryImpl;public class DtobServiceTest {    public static void main(String[] args) {        Endpoint.publish("http://localhost:55555/dtob", new DecimalToBinaryImpl());//发布的地址,实现类的实例        System.out.println("发布成功!");    }}

注意要在实现类上加上@webservice注解,表示这个作为webservice程序发布;
运行类DtobServiceTest ,在浏览器中打开你的发布地址,我这里是http://localhost:55555/dtob,打开后如下,jdk1.8只能打开使用说明书
http://localhost:55555/dtob?wsdl:
这里写图片描述

点击wsdl后面的链接可以看到该服务的使用说明书:
这里写图片描述

上述页面能打开其中一个都表示发布成功.

二、客户端开发
1.建立javaproject
这里写图片描述
2.打开命令提示符,定位到ws_client客户端项目的src目录,输入命令:
wsimport -s . http://localhost:55555/dtob?wsdl
这里写图片描述
后面的地址是你发布服务端的wsdl地址,根据wsdl生成客户端代码
刷新建立的客户端javaproject,可以看到生成的代码。
3.新建一个类,调用服务端发布的接口
这里写图片描述

调用类的代码:

package client.invoke;import com.txx.service.impl.DecimalToBinaryImpl;import com.txx.service.impl.DecimalToBinaryImplService;public class ClientTest {    public static void main(String[] args) {        DecimalToBinaryImplService dtbis = new DecimalToBinaryImplService();        DecimalToBinaryImpl dtbi = dtbis.getPort(DecimalToBinaryImpl.class);        System.out.println(dtbi.transfrom(265));    }}

运行代码得到结果:
这里写图片描述

可以看到客户端调用服务端成功,到此为止一个jws开发的webservice服务端和客户端开发完成。这里只阐述了开发的过程,未详述原理,原理就下次在写把。

0 0
原创粉丝点击