Java Web Services介绍

1. 什么是 Web Services

Web Services 可使您的应用程序成为 Web 应用程序。Web Services 通过 Web 进行发布、查找和使用。

2. Web Services 的实现基础

基础的 Web Services 平台是 XML + HTTP。

HTTP 协议是最常用的因特网协议。

XML 提供了一种可用于不同的平台和编程语言之间的语言,解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。

例如,整形数到底代表什么?16位,32位,还是64位?这些细节对实现互操作性都是很重要的。

W3C制定的XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。Web service平台就是用XSD来作为其数据类型系统的。

当你用某种语言(如VB.NET或C#)来构造一个Web service时,为了符合Web service标准,所有你使用的数据类型都必须被转换为XSD类型。

你用的工具可能已经自动帮你完成了这个转换,但你很可能会根据你的需要修改一下转换过程。

Web services 平台的元素:

  • SOAP (简易对象访问协议)
  • UDDI (通用描述、发现及整合)
  • WSDL (Web services 描述语言)

Web services 使用 XML 来编解码数据,并使用 SOAP 借由开放的协议来传输数据。

3. Java 开发Web Services的Demo

package com.demo;


import javax.jws.WebService;
import javax.xml.ws.Endpoint;


@WebService
public class Function {


    public String transWords(String words){
        String res = "";
        for(char ch : words.toCharArray()){
            res += ch+",";
        }
        return res;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
         Endpoint.publish("http://localhost:8080/service/function", new Function());
         System.out.println("Publish Success");

    }

}



打开浏览器 http://localhost:8089/service/function?wsdl 就能开到运行的效果

4. Web Services开发框架

JWS

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

Axis2

Axis2是Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者,它能不但能制作和发布WebService,而且可以生成Java和其他语言版WebService客户端和服务端代码。这是它的优势所在。

但是,这也不可避免的导致了Axis2的复杂性,使用过的开发者都知道,它所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦,不能很好的与现有应用整合为一体。但是如果你要开发Java之外别的语言客户端,Axis2提供的丰富工具将是你不二的选择。

XFire

XFire是一个高性能的WebService框架,在Java6之前,它的知名度甚至超过了Apache的Axis2,XFire的优点是开发方便,与现有的Web整合很好,可以融为一体,并且开发也很方便。但是对Java之外的语言,没有提供相关的代码工具。XFire后来被Apache收购了,原因是它太优秀了,收购后,随着Java6 JWS的兴起,开源的WebService引擎已经不再被看好,渐渐的都败落了。

CXF

CXF是Apache旗下一个重磅的SOA简易框架,它实现了ESB(企业服务总线)。CXF来自于XFire项目,经过改造后形成的,就像目前的Struts2来自WebWork一样。可以看出XFire的命运会和WebWork的命运一样,最终会淡出人们的视线。CXF不但是一个优秀的Web Services / SOAP / WSDL 引擎,也是一个不错的ESB总线,为SOA的实施提供了一种选择方案,当然他不是最好的,它仅仅实现了SOA架构的一部分。

如何抉择: 1. 如果应用程序需要多语言的支持,Axis2 应当是首选了 2. 如果应用程序是遵循 Spring 哲学路线的话,Apache CXF 是一种更好的选择,特别对嵌入式的 Web Services 来说 3. 如果应用程序没有新的特性需要的话,就仍是用原来项目所用的框架

5. 参考来源

  • https://www.cnblogs.com/zhuyiqizhi/p/6045638.html
  • https://www.cnblogs.com/AlanLee/p/6933073.html
  • https://blog.csdn.net/linjinhuo/article/details/78777694

相关主题:
相关推荐
  1. 绿太阳和蓝蜗牛
  2. 事发武汉农夫山泉矿泉水内惊现大量虫卵
  3. 狐狸家的晚餐
  4. 警方通报:武汉男子持刀至五死一伤,嫌犯已跳桥
  5. Python公开课 - 网络编程
  6. 杭州市教育学院附属小学
  7. 武汉一女子七天被骗220万
  8. 什么是TOGAF - TOGAF系列教程(1)
  9. 武汉推出越王勾践剑交通卡
  10. 沈阳市令闻街第一小学(令闻街一小)
  11. 西安市临潼区菊利幼儿园 - 西安幼儿园黄页
  12. Python公开课 - 详解面向对象
  13. 脱单!武汉的相亲角在哪你知道吗?
  14. Java Web Services介绍
  15. 武汉动物园火烈鸟孔雀排队打疫苗
  16. 爱尔乐·万兴幼儿园 - 成都市幼儿园黄页
  17. 代理技术详解 - HTTP代理,HTTPS代理及SOCKS 5代理
  18. 桂林市象山区阳光托教中心 - 桂林幼儿园黄页
  19. 上海市杨浦区翔殷路小学
  20. 小袋鼠让座
  21. 易中天给英雄武汉的一首诗 - 武汉新鲜事
  22. 上海市浦东新区东蕾幼儿园(金鹏部) - 上海幼儿园黄页
  23. 狡猾的皮诺乔
  24. 是谁在敲门
  25. 解决Python json.dumps中文字符乱码问题
  26. Python公开课 - 页面解析之pyquery
  27. 烂布片
  28. 邯郸市成安县向阳小学
  29. 九龙升天图
  30. 广州市番禺区钟村镇韦大小学
  31. 太原市阳曲县快乐宝贝幼儿园六分园 - 太原幼儿园黄页
  32. 愚人得燕石
  33. 无锡市新苑小学
  34. 央媒聚焦!国庆假期173.78万人次打卡大美黄陂
  35. 滕州市第二实验小学(滕州二实小)
  36. 哈尔滨市先锋小学校
  37. synchronized与lock的区别 - 阿里技术面试
  38. 武汉女子网上做兼职被骗六十五万
  39. 东莞市横沥崇德小学
  40. 吉林省长春市榆树市心悦幼儿园 - 长春幼儿园黄页
  41. 细菌躲猫猫
  42. 东方之家双语幼儿园 - 成都市幼儿园黄页
  43. 一文看懂Python中的协程
  44. 奥迪客户不满加价,被武汉4S店销售群殴
  45. 哈尔滨市阿城区安琪儿幼儿园 - 哈尔滨幼儿园黄页
  46. 佛山市里水小学
  47. 西安市碑林区金色起点早教中心 - 西安幼儿园黄页
  48. 南宁市良庆区那团新村幼儿园 - 南宁幼儿园黄页
  49. Python公开课 - 页面解析之Beautiful Soup
  50. 和尚挖井