文档章节

认识一下WebService应用的简单开发

海岸线的曙光
 海岸线的曙光
发布于 07/09 16:59
字数 1092
阅读 444
收藏 11
点赞 1
评论 1

    在开发中,不免遇到两个不同系统交互的问题,比如数据信息同步、数据信息获取等,解决问题的途径有多种,今天带大家认识一下 WebService,看看它在实际应用中的处理。

    一、什么是WebService

    简单的说:WebService即Web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术。

    二、WebService三要素

    SOAP (Simple Object Access Protocol):简易对象访问协议,soap用来描述传递信息的格式;

    WSDL (WebServices Description Language):Web服务描述语言,用来描述如何访问具体的接口;

    UDDI (Universal Description Discovery and Integration):通用描述、发现及整合,用来管理、分发、查询webService;

    三、调用第三方提供的WebService服务

    网上有很多免费的WebService服务,我们通过调用这些免费的WebService服务,来获取所需的数据信息,下面通过调用免费的WebService服务查询手机号码归属地的信息。

    (1)根据提供的服务网址,执行命令,生成代码

    提供服务的WebService网址:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl,通过wsimport命令(该命令是JDK/bin下自带的),生成代码:

wsimport -keep http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 

    打开cmd,在窗口输入上面的命令,执行结果如下:

    由于不同的WebService使用的代码类型,如 java、.net等,所以这里注意一下,若出现报错的情况,看看是否是因为代码编写的类型不同导致,这时,就需要将wsdl下载下来进行修改了。执行完后,在目录下我们可以看到生成了一些java和class文件,删除class文件,保留java文件。

    (2)新建java项目,导入生成的文件

    打开eclipse,新建java project,将java文件复制到项目目录下,注意路径,如下:

    

    分析一下java文件:MobileCodeWS.java、MobileCodeWSSoap.java是重要的服务类,从代码中可以看出,在下面使用中需要实例化。

    (3)实例化类,编写客户端代码,调用接口获取数据

    新建PhoneWsClient类,代码如下:

public class PhoneWsClient{

   public static void main(String[] args){
       //实例化服务类
       MobileCodeWS ws = new MobileCodeWS();
       //调用服务类的方法获取接口实例
       MobileCodeWSSoap soap = ws.getMobileCodeWSSoap();
       //通过接口获取数据
       String phoneInfo = soap.getMobileCodeInfo("1.......3(手机号)", null);
       System.out.println(phoneInfo);
   }
}

    项目结构如下:

    运行结果如下:

    四、开发自己的WebService服务

    (1)新建java project项目,创建主要类

    在项目中,主要类分为:接口类、实现类、发布类,如下所示结构:

    接口interface:

/*
 * 使用@WebService注解标注WebServiceI接口
 */
@WebService
public interface WebServiceI{
    //使用@WebMethod注解标注WebServiceI接口中的方法
    @WebMethod
    String sayHello(String name);
}

    实现Implement:

/*
 * 使用@WebService注解标注实现类WebServiceImpl
 */
@WebService
public class WebServiceImpl implements WebServiceI{
    
    @Override
    public String sayHello(String name){
       System.out.println("sayHello "+name);
       return "sayHello "+name;
    }
}

    发布Publish:

/*
 * 发布WebService
 */
public class WebServicePublish{
    public static void main(String[] args){
        //定义WebService的发布地址,这个地址就是提供给外界访问Webervice的URL地址
        String address = "http://localhost:8889/My_Server/Webservice";
        //使用Endpoint类提供的publish方法发布WebService
        Endpoint.publish(address, new WebServiceImpl());
        System.out.println("发布webservice成功!");
    }
}

    (2)运行WebServicePublish类,发布WebService

    

    若运行时报如下错误:

Exception in thread "main" com.sun.xml.internal.ws.model.RuntimeModelerException: runtime modeler error: Wrapper class com.ws.jaxws.DoSomething is not found. Have you run APT to generate them?

    解决办法:

    先用apt命令将主程序进行编译,然后生成一些java文件;

    升级JDK版本,比如1.7以后(推荐);

    (3)访问发布WebService的URL地址

    本地的话,直接用localhost,若给其他人使用,则需改为实际地址:http://localhost:8889/My_Server/Webservice

    点击WSDL进行查看:

    从wsdl文件中可以看到我们提供的接口和类。

    当然,发布的方式也可以不同,根据项目类型,可以使用监听器或者Servlet等方式。

    同第三方服务一样,我们也可以根据访问的wsdl地址生成客户端代码进行接口调用,这里就不做演示了,大家参照上面即可实现。

© 著作权归作者所有

共有 人打赏支持
海岸线的曙光
粉丝 36
博文 40
码字总数 48069
作品 0
朝阳
程序员
加载中

评论(1)

MZHS
MZHS
说的辣么高大上,其实就是提供一个规范让别远程调用,返回结果。
新手初识webservice-理论篇

工作中接触到了一些webservice应用,进而想整理出一些东西,给组里如我一样的毛头小伙子分享下,后来觉得在OSC一直默默潜水了快两年了,好像没留下过什么有价值的东西,就顺路记在这里吧,望...

路飞
2012/04/08
0
16
webservice之接口开发

经过前两天的学习,基本上已经对webservice有了基本的认识,在工作中我遇到webservice一般也就有一下的几种情况, 不同应用程序,不同语言之间的共享数据(传说中的接口),不同公司之间的数...

monster_nian
2016/01/25
1K
1
由架构图重点分析易混淆web服务器

原文链接:http://blog.csdn.net/llhhyy1989/article/details/8276380

长平狐
2012/12/10
205
0
C# 创建、部署和调用WebService的简单示例

C# 创建、部署和调用WebService的简单示例 https://www.cnblogs.com/Brambling/p/6815565.html webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互。 概念性的东西就不说太...

chenhao_asd
03/22
0
0
webservice发布--使用axis2发布

如何使用axis2发布webservice? axis2发布webservice分为打包发布和不打包发布两种,今天主要研究了一下打包发布的方法 1.部署axis2框架(使用tomcat部署) 1.1 下载axis2的war包,测试使用的w...

程序员小虫
2014/10/23
0
1
http接口、api接口、RPC接口、RMI、webservice、Restful等概念

在这之前一定要好好理解一下接口的含义,我觉得在这一类中接口理解成规则很恰当。 http接口:基于HTTP协议的开发接口.这个并不能排除没有使用其他的协议。 api接口:API(Application Program...

一一叶
2015/08/31
5K
1
restful webservice SOAP webservice

为了说明这个问题,必须的纠正一下我们对HTTP的认识。 首先回顾一下OSI七层模型 OSI(Open System Interconnection,开放系统互连)七层模型 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 ...

zppiio
2014/12/25
0
0
Web Services(1)-入门介绍及实战

1.Web Services 简介 Web Services, 即 "Web 服务", 简称 "WS", 其实就是"基于Web 服务" , 所谓的服务是双方的,有服务的提供方,也有服务的需求方, 通常是服务提供方发布服务,服务需求方调用...

陈小扁
2016/03/28
168
0
WebService框架JWS、Axis2、XFire、CXF的区别

1、JWS是Java语言对WebService服务的一种实现,用来开发和发布服务。而从服务本身的角度来看JWS服务是没有语言界限的。但是Java语言为Java开发者提供便捷发布和调用WebService服务的一种途径...

liangyx
2012/12/15
0
1
浅谈跨域以及WebService对跨域的支持

跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。 在以前...

冬瓜1
2016/01/21
18
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
今天
2
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
2
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
今天
1
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
今天
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
1
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部