Java Web服务:构建与运行
基本信息
- 原书名: Java Web Services: Up and Running
- 原出版社: O'Reilly Media
- 作者: Martin Kalin [作译者介绍]
- 译者: 任增刚
- 丛书名: 电子工业出版社O'REILLY系列
- 出版社:电子工业出版社
- ISBN:9787121097119
- 上架时间:2009-11-26
- 出版日期:2009 年11月
- 开本:16开
- 页码:297
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > JAVA(J#) > 综合
编辑推荐
包含大量有完整代码的实例.
以示例驱动的方式,循序渐进地解剖基于Java的Web服务技术..
评点基于SOAP和RESTful的服务的异同,细致分析服务部署方式...
推荐阅读
内容简介回到顶部↑
本书以示例驱动的方式详尽地介绍了xml web服务(jax-ws)和restfulweb服务(jax-rs)二者所涵盖的java相关api。.
《java web服务:构建与运行》以清晰、务实的方法讲述web服务相关技术,提供了混合性的架构总结、完全可以运行的代码示例,以及编译、部署和执行应用程序的一些短小精悍的指令。学习本书,读者将掌握如何从零开始编写web服务或将已有的服务整合到现有的java程序中。通过本书的学习,读者将会:..
·理解基于soap的web服务和restful风格的服务之间的区别。
·利用核心java技术编写、部署和消费基于soap的web服务。
·理解web服务描述语言(wsdl)这一服务契约。
·认识soap消息的真正结构。
·学习如何交付基于java的restful风格的web服务和消费商业restful风格的服务。
·了解基于soap和rest风格的web服务对于安全的需求。
·学习如何在不同的环境中部署jax—ws服务。
除了经验丰富的程序员,本书还适合于那些关注web服务技术的在校学生,它以简洁明了的方式引导读者快速地利用这些技术进行web服务的开发工作。...
《java web服务:构建与运行》以清晰、务实的方法讲述web服务相关技术,提供了混合性的架构总结、完全可以运行的代码示例,以及编译、部署和执行应用程序的一些短小精悍的指令。学习本书,读者将掌握如何从零开始编写web服务或将已有的服务整合到现有的java程序中。通过本书的学习,读者将会:..
·理解基于soap的web服务和restful风格的服务之间的区别。
·利用核心java技术编写、部署和消费基于soap的web服务。
·理解web服务描述语言(wsdl)这一服务契约。
·认识soap消息的真正结构。
·学习如何交付基于java的restful风格的web服务和消费商业restful风格的服务。
·了解基于soap和rest风格的web服务对于安全的需求。
·学习如何在不同的环境中部署jax—ws服务。
除了经验丰富的程序员,本书还适合于那些关注web服务技术的在校学生,它以简洁明了的方式引导读者快速地利用这些技术进行web服务的开发工作。...
作译者回到顶部↑
本书提供作译者介绍
Martin Kalin拥有西北大学的哲学博士学位,同时是美国迪保罗大学计算机和数字媒体学院的教授。曾经编写并出版了数本关于C和C++语言,以及Java编程的图书。他对商业程序设计有浓厚的兴趣,曾经参与过多个大型分布式系统的设计,主要负责进程调度和产品配置。...
.. << 查看详细
.. << 查看详细
目录回到顶部↑
前言. i
第1章 java web服务快速入门 1
1.1 什么是web服务 1
1.2 第一个例子 4
1.3 由perl和ruby语言实现的web服务客户端 10
1.4 了解soap 11
1.5 java语言实现web服务请求 13
1.6 基于通信层的http和soap消息跟踪 14
1.7 目前为止还有什么不清楚 16
1.8 java soap编程api 18
1.9 带有复杂数据类型的web服务 23
1.10 多线程端点服务发布程序 27
1.11 下一章 30
第2章 全面了解wsdl 31
2.1 wsdl在web服务中的作用 31
2.2 wsdl文档结构 36
2.3 amazon e-commerce web服务 46
2.4 wsgen工具与jax-b工件(artifacts) 59
2.5 wsdl总结 69
2.6 下一章 80
第1章 java web服务快速入门 1
1.1 什么是web服务 1
1.2 第一个例子 4
1.3 由perl和ruby语言实现的web服务客户端 10
1.4 了解soap 11
1.5 java语言实现web服务请求 13
1.6 基于通信层的http和soap消息跟踪 14
1.7 目前为止还有什么不清楚 16
1.8 java soap编程api 18
1.9 带有复杂数据类型的web服务 23
1.10 多线程端点服务发布程序 27
1.11 下一章 30
第2章 全面了解wsdl 31
2.1 wsdl在web服务中的作用 31
2.2 wsdl文档结构 36
2.3 amazon e-commerce web服务 46
2.4 wsgen工具与jax-b工件(artifacts) 59
2.5 wsdl总结 69
2.6 下一章 80
译者序回到顶部↑
Web服务相关规范从提出到今天也经历过一段不短的历程,而面向服务的架构SOA的出现更是让Web服务技术走在了企业应用开发的前头。在1998年XML刚刚出现时,就吸引了众多业界人士的眼光,还曾经被誉为一种完成商业对象互操作任务的新技术。目前XML已经在各种类型的企业开发中得以广泛应用,而随后的简单对象访问协议(SOAP)和XML-RPC规范的制定和出现,为实现不同软件系统平台之间的交互提供了一种独立于特定平台的方式,从而使得分布式计算环境得到真正的发展。回望这几个年头,SOAP协议的快速成功更是进一步促进并提升了软件互操作的发展台阶。随SOAP之后出现的Web服务描述语言(WSDL),以及通用发现、描述、集成(UDDI)规范的提出和在整个软件行业的推广,进一步促进了更多相关软件互操作规范的提出。.
本质上来说,世界上没有任何一个IT系统是孤立的,它们是企业内部的办公管理、财务、ERP,以及金融、电信、证券和其他行业的大型应用系统,互联网电子商务的蓬勃发展,越来越需要有一种独立于平台的互操作技术规范作为支撑,对这些系统间的互用性进行广泛的支持。因此针对开发者而言,Web服务技术是必然要面对的一项技术。我们知道,Web服务是不依赖于任何特定计算机语言和运行平台的,然而时至今日,开发者仍然必须使用不同的计算机程序设计语言开发企业程序。而目前Java和J2EE业已成为绝大多数企业应用,甚至是大型企业应用的主流开发环境,Java和J2EE平台对Web服务实现的支持也日臻成熟和完善。..
目前在Web服务实现、开发、部署、安全等相关领域已经涌现出许多规范和技术框架,它们在Java和Web服务之间架起了桥梁。本书为初学者介绍了什么是Web服务和用来支持Web服务开发、部署、安全等相关的Java 技术,并重点讲述了目前基于Java语言的主要的Web服务技术和实现方式,还对目前流行的两种Web服务实现方式——基于SOAP架构和基于RESTful架构分别进行了讲述,同时对不同的服务部署方式等进行了细致的分析和说明。本书的后面章节,原作者分两章讲述了Web服务安全涉及的相关课题和技术。
本书结合代码驱动的方法,以循序渐进的方式对时下流行的基于Java的Web服务技术进行了讲解,对基于Java语言进行Web服务的开发学习有一定指导意义。由于译者水平及能力有限,翻译过程中难免会有疏漏或不能完全准确地传达原作者本意之处,敬请读者指正。如果您在阅读时有什么疑问或建议请邮件联系:ws.learning@gmail. com
任增刚 2009年8月22日于上海...
本质上来说,世界上没有任何一个IT系统是孤立的,它们是企业内部的办公管理、财务、ERP,以及金融、电信、证券和其他行业的大型应用系统,互联网电子商务的蓬勃发展,越来越需要有一种独立于平台的互操作技术规范作为支撑,对这些系统间的互用性进行广泛的支持。因此针对开发者而言,Web服务技术是必然要面对的一项技术。我们知道,Web服务是不依赖于任何特定计算机语言和运行平台的,然而时至今日,开发者仍然必须使用不同的计算机程序设计语言开发企业程序。而目前Java和J2EE业已成为绝大多数企业应用,甚至是大型企业应用的主流开发环境,Java和J2EE平台对Web服务实现的支持也日臻成熟和完善。..
目前在Web服务实现、开发、部署、安全等相关领域已经涌现出许多规范和技术框架,它们在Java和Web服务之间架起了桥梁。本书为初学者介绍了什么是Web服务和用来支持Web服务开发、部署、安全等相关的Java 技术,并重点讲述了目前基于Java语言的主要的Web服务技术和实现方式,还对目前流行的两种Web服务实现方式——基于SOAP架构和基于RESTful架构分别进行了讲述,同时对不同的服务部署方式等进行了细致的分析和说明。本书的后面章节,原作者分两章讲述了Web服务安全涉及的相关课题和技术。
本书结合代码驱动的方法,以循序渐进的方式对时下流行的基于Java的Web服务技术进行了讲解,对基于Java语言进行Web服务的开发学习有一定指导意义。由于译者水平及能力有限,翻译过程中难免会有疏漏或不能完全准确地传达原作者本意之处,敬请读者指正。如果您在阅读时有什么疑问或建议请邮件联系:ws.learning@gmail. com
任增刚 2009年8月22日于上海...
前言回到顶部↑
本书主要针对那些对基于Java语言进行Web服务及相关服务客户端开发技术感兴趣的程序开发人员而编写,同时本书所涉及的Java Web服务客户端,可以基于任何语言实现的Web服务进行编写。本书以代码驱动的方式介绍了JAX-WS(Java API for XML-Web Service)框架,以及针对Java技术而言,在基于SOAP协议和Rest风格的Web服务框架上的选择。在本书中,我的主要目标就是从各个方面介绍JAX-WS,包括目前较为流行的一些Web服务项目,比如基于Rest风格的Jersey项目。.
JAX-WS被打包在Metro Web服务协议栈(Metro Web Services Stack)之中,通常简称“Metro”。自Java SE 6以来(此后Java 6被称之为核心Java6),Metro便作为其中的一部分发行。然而Metro新版的发行速度远超过了Java SE新版本的发布。可以通过站点:https://wsit.dev.java.net来下载最新的Metro发行版。Metro同样被整合在了Sun应用服务器GlassFish中。鉴于这几种选择,本书中的示例代码将分别通过如下4种不同的方式进行部署:
仅在核心Java环境中
采用此种方式使得Web服务程序及其调用客户端的构建和运行变得更加简易。此种方式所需要的唯一运行支持环境就是Java SE 6或更高版本的应用软件开发包(Software Development Kit,SDK)。可以通过Endpoint、HttpServer及HttpsServer等相关Java类轻松地完成Web服务的部署。本书中前面几章中的示例均采用此种方式部署。
带有Metro最新版的核心Java环境
此种部署方法可以充分利用由Metro提供的而Java SE中所没有的一些功能。实际上,每一次Metro新版本的发布都使得Web服务和客户端的开发工作变得更加容易。Metro新版本的发布同样也预示着JAX-WS未来的发展方向。如果在开发时选择的Java环境是Java SE 5而不是Java SE 6,那么同样也可以在Java SE 5中使用Metro。
Tomcat
此种方式是Web服务的部署环境采用Java程序人员较为熟知的独立Web容器,比如Apache Tomcat。Web服务可以利用Web容器部署,部署方式同常见的Servlet、JSP(JavaServer Pages)、JSF(JavaServer Faces)的部署过程类似,没有本质差别。同样,通过像Tomcat这样的Web容器部署的Web服务来进一步了解Web服务容器管理的Web服务安全(Container-Managed Security)也是一个行之有效的方法。
GlassFish
采用这种方式部署的Web服务可以很容易同其他企业级组件进行交互,比如Java主题(Topics)或队列(Queues)消息服务(Java Message Service,JMS)、JNDI(Java Naming and Directory Interface)提供者,通过@Entity注解的对象实例来协调应用和数据库系统之间的交互的后台数据库系统,以及EJB(Enterprise Java Bean)容器等。Web服务可以作为一个无状态会话Bean部署在EJB容器中,这样可以充分利用容器管理的线程安全机制。在NetBeans和Eclipse这些目前比较流行的集成开发环境中(Integrated Development Environment,IDE),GlassFish可以无缝集成Metro及它的其他高级特性。
在JAX-WS中,一个令人瞩目的特色是其API和部署方式的完全分离。可以根据不同的实际需要而采用多种不同的方式来部署同一个Web服务。独立的核心Java环境对于学习、开发,甚至一些轻量级的Web服务部署来说是一个不错的选择。当然,一些独立的Web容器,比如Tomcat通常对Web服务的部署提供了一些额外的支持,而GlassFish这样的Java应用服务器使Web服务和其他企业级技术的集成变得非常简单。
代码驱动方式
本书中的相关实例代码通常都尽量保持简短,以致于能够重点强调JAX-WS的一些关键特性;同时,这些实例也结合实际情况充分展示了伴随JAX-WS框架所带来的一些产品级特性。本书中的每一个实例都给出了完整的代码,甚至包括了完整的包导入语句。我通常都会先以简单的几行代码入手,然后在此基础之上再进行代码的增加或修改以增加新的特性。这些实例的源代码有长有短,有的可能只有寥寥数行,有的甚至可能会有几页篇幅。我还有意地将这些代码进行了组件化。在代码的简明和清晰度的选择上,我一般都会倾向于后者。
这些示例从编译、部署Web服务的相关命令和测试这些服务的简单客户端起步,这样做的目的不仅仅是为程序员提供JAX-WS这样一种选择,同时是希望能够使程序员对JAX-WS库和工具包进行深入透彻的分析和了解。我的最终目标是期望本书中所提供的相关示例代码能够作为某些商业应用程序的模板直接使用。
JAX-WS拥有丰富的API,对这些API深入学习最行之有效的方式是概括了解和实际例子相结合。虽然在本书中,我的主要目标是向读者展示Web服务架构的一些关键特性,但最为重要的是应该结合实际示例展示每一个关键特性确实能够达到JAX-WS所描述的结果。没有代码的架构是虚幻不切实际的;同样,没有架构的代码是盲目没有目标的。在本书中,我的观点是将二者进行有效的结合。
针对分布式软件系统(Distributed Software Systems)来说,Web服务技术提供了一种新颖的、轻量级的解决方法,比如说,邮件服务系统或需要在不同的物理设备上执行不同软件组件的互联网(World Wide Web)系统。这些设备可能是大型服务器,抑或是个人计算机、不同类型的手持设备,等等。由于由众多不同的网络化组件组成,分布式系统大都是非常复杂的。一些分布式系统的例子可能并没有按照我们预期的要求运行,同时加上这些系统的调试相当枯燥,这往往使我们在学习过程中倍受打击。本书所有示例,通过我所提供的一些简单指令,读者能够顺利地启动和运行。本书的示例源代码均可以通过本书出版社的网站http://www.oreilly.com/catalog/9780596521127下载。我的电子邮件是kalin@cdm.depaul. edu,如果你发现示例中的代码存在错误,可以随时和我联系。
本书各章概览
本书总共包括7章,后面的一些章节可能内容相对少一些。下面是本书中涉及的每章内容的简要概述。
第1章:Java Web服务快速入门
本章从Web服务的定义开始,讲述了基于SOAP协议和Rest风格的两种不同的Web服务编程模型的区别,然后重点介绍如何利用Java核心技术编写、部署及消费基于SOAP的Web服务的基础知识。同时为了更好地理解Web服务的语言无关这一特点,Web服务的调用客户端分别采用了Perl、Ruby和Java等不同计算机语言进行编写。本章还介绍了基于SOAP协议的Java API,同时在“线路级”层面上通过几种不同的方法验证了Web服务的通信方式。在本章最后详细讲述了核心Java和Metro框架二者之间的关系。
JAX-WS被打包在Metro Web服务协议栈(Metro Web Services Stack)之中,通常简称“Metro”。自Java SE 6以来(此后Java 6被称之为核心Java6),Metro便作为其中的一部分发行。然而Metro新版的发行速度远超过了Java SE新版本的发布。可以通过站点:https://wsit.dev.java.net来下载最新的Metro发行版。Metro同样被整合在了Sun应用服务器GlassFish中。鉴于这几种选择,本书中的示例代码将分别通过如下4种不同的方式进行部署:
仅在核心Java环境中
采用此种方式使得Web服务程序及其调用客户端的构建和运行变得更加简易。此种方式所需要的唯一运行支持环境就是Java SE 6或更高版本的应用软件开发包(Software Development Kit,SDK)。可以通过Endpoint、HttpServer及HttpsServer等相关Java类轻松地完成Web服务的部署。本书中前面几章中的示例均采用此种方式部署。
带有Metro最新版的核心Java环境
此种部署方法可以充分利用由Metro提供的而Java SE中所没有的一些功能。实际上,每一次Metro新版本的发布都使得Web服务和客户端的开发工作变得更加容易。Metro新版本的发布同样也预示着JAX-WS未来的发展方向。如果在开发时选择的Java环境是Java SE 5而不是Java SE 6,那么同样也可以在Java SE 5中使用Metro。
Tomcat
此种方式是Web服务的部署环境采用Java程序人员较为熟知的独立Web容器,比如Apache Tomcat。Web服务可以利用Web容器部署,部署方式同常见的Servlet、JSP(JavaServer Pages)、JSF(JavaServer Faces)的部署过程类似,没有本质差别。同样,通过像Tomcat这样的Web容器部署的Web服务来进一步了解Web服务容器管理的Web服务安全(Container-Managed Security)也是一个行之有效的方法。
GlassFish
采用这种方式部署的Web服务可以很容易同其他企业级组件进行交互,比如Java主题(Topics)或队列(Queues)消息服务(Java Message Service,JMS)、JNDI(Java Naming and Directory Interface)提供者,通过@Entity注解的对象实例来协调应用和数据库系统之间的交互的后台数据库系统,以及EJB(Enterprise Java Bean)容器等。Web服务可以作为一个无状态会话Bean部署在EJB容器中,这样可以充分利用容器管理的线程安全机制。在NetBeans和Eclipse这些目前比较流行的集成开发环境中(Integrated Development Environment,IDE),GlassFish可以无缝集成Metro及它的其他高级特性。
在JAX-WS中,一个令人瞩目的特色是其API和部署方式的完全分离。可以根据不同的实际需要而采用多种不同的方式来部署同一个Web服务。独立的核心Java环境对于学习、开发,甚至一些轻量级的Web服务部署来说是一个不错的选择。当然,一些独立的Web容器,比如Tomcat通常对Web服务的部署提供了一些额外的支持,而GlassFish这样的Java应用服务器使Web服务和其他企业级技术的集成变得非常简单。
代码驱动方式
本书中的相关实例代码通常都尽量保持简短,以致于能够重点强调JAX-WS的一些关键特性;同时,这些实例也结合实际情况充分展示了伴随JAX-WS框架所带来的一些产品级特性。本书中的每一个实例都给出了完整的代码,甚至包括了完整的包导入语句。我通常都会先以简单的几行代码入手,然后在此基础之上再进行代码的增加或修改以增加新的特性。这些实例的源代码有长有短,有的可能只有寥寥数行,有的甚至可能会有几页篇幅。我还有意地将这些代码进行了组件化。在代码的简明和清晰度的选择上,我一般都会倾向于后者。
这些示例从编译、部署Web服务的相关命令和测试这些服务的简单客户端起步,这样做的目的不仅仅是为程序员提供JAX-WS这样一种选择,同时是希望能够使程序员对JAX-WS库和工具包进行深入透彻的分析和了解。我的最终目标是期望本书中所提供的相关示例代码能够作为某些商业应用程序的模板直接使用。
JAX-WS拥有丰富的API,对这些API深入学习最行之有效的方式是概括了解和实际例子相结合。虽然在本书中,我的主要目标是向读者展示Web服务架构的一些关键特性,但最为重要的是应该结合实际示例展示每一个关键特性确实能够达到JAX-WS所描述的结果。没有代码的架构是虚幻不切实际的;同样,没有架构的代码是盲目没有目标的。在本书中,我的观点是将二者进行有效的结合。
针对分布式软件系统(Distributed Software Systems)来说,Web服务技术提供了一种新颖的、轻量级的解决方法,比如说,邮件服务系统或需要在不同的物理设备上执行不同软件组件的互联网(World Wide Web)系统。这些设备可能是大型服务器,抑或是个人计算机、不同类型的手持设备,等等。由于由众多不同的网络化组件组成,分布式系统大都是非常复杂的。一些分布式系统的例子可能并没有按照我们预期的要求运行,同时加上这些系统的调试相当枯燥,这往往使我们在学习过程中倍受打击。本书所有示例,通过我所提供的一些简单指令,读者能够顺利地启动和运行。本书的示例源代码均可以通过本书出版社的网站http://www.oreilly.com/catalog/9780596521127下载。我的电子邮件是kalin@cdm.depaul. edu,如果你发现示例中的代码存在错误,可以随时和我联系。
本书各章概览
本书总共包括7章,后面的一些章节可能内容相对少一些。下面是本书中涉及的每章内容的简要概述。
第1章:Java Web服务快速入门
本章从Web服务的定义开始,讲述了基于SOAP协议和Rest风格的两种不同的Web服务编程模型的区别,然后重点介绍如何利用Java核心技术编写、部署及消费基于SOAP的Web服务的基础知识。同时为了更好地理解Web服务的语言无关这一特点,Web服务的调用客户端分别采用了Perl、Ruby和Java等不同计算机语言进行编写。本章还介绍了基于SOAP协议的Java API,同时在“线路级”层面上通过几种不同的方法验证了Web服务的通信方式。在本章最后详细讲述了核心Java和Metro框架二者之间的关系。
媒体评论回到顶部↑
“《Java Web服务:构建与运行》提供了许多实用的例子,如亚马逊相关Web服务的使用及Web服务安全,而后者还包括了很多不错的图例、关子安全的叙述及加密算法说明;除此之外,本书提供了数字证书使用的例子。这些内容都是我在其他的同类书籍中不曾看到的。”...
———Greg Ostravich,
美国丹佛市Java
用户组总经理
———Greg Ostravich,
美国丹佛市Java
用户组总经理


点击看大图






加载中...
