Java SOA Cookbook中文版
Eben Hewitt
孙燕, 陈伊文, 王俊华 译
出版时间:2011年07月
页数:679
本书为需要在企业中实现面向服务架构(SOA)的程序员提供了实用的解决方案和建议。本书不只是给出一些概念性、宏观性的SOA,而是向读者展示了如何使SOA真正运作起来。本书给出了大量的Java和XML代码,读者可以把这些代码直接插入到自己的应用中,书中给出的大量技巧,读者也可以拿来就用。

本书主要关注的是自由和开源的Java Web服务技术的使用,这些技术包括Java SE 6和Java EE 5等,但本书介绍的技术也同样适用于其他商用工具。

本书可帮助读者:
● 构建适用于SOA应用的XML词汇和数据模型。
● 使用最新的Java标准(包括用于RESTful Web服务的JAX-WS 2.1和JAX-RS 1.0)来构建实际的Web服务。
● 使用SOAP、POX和Atom,集成来自常见服务提供商的各种应用。
● 使用WS-BPEL 2.0标准来创建服务编排。
● 使用诸如WS-ReliableMessaging的规范说明,来提高基于SOAP服务的可靠性。
● 处理政策、可互操作性以及服务质量等问题。
本书中介绍的技巧,有助于读者应对SOA集成所需的知识。

“本书的示例清晰、结构良好且设计成熟。这是一本很好的图书,从本书中,我发掘出了多年来一直在寻找的答案。”
——Jason Brittain:“Tomcat:The Definitive Guide”一书的作者

Eben Hewitt是美国一家零售公司的技术架构师,关注设计和构建该公司的SOA。他已经编写了多本编程书籍,包括“Java for ColdFusion Developers”,他还是“97 Things Every Software Architect Should Know”一书的合著者。
  1. 前言
  2. 第一部分 SOA基础
  3. 第1章 SOA入门
  4. 1.1 概述
  5. 1.2 定义服务
  6. 1.3 定义SOA
  7. 1.4 识别服务候选对象
  8. 1.5 识别不同种类的服务
  9. 1.6 为服务建模
  10. 1.7 使服务可组合
  11. 1.8 支持SOA工作
  12. 1.9 选择试验项目
  13. 1.10 建立治理机制
  14. 本章小结
  15. 第2章 XML Schema和SOA数据模型
  16. 2.1 概述
  17. 2.2 为SOA设计Schema
  18. 2.3 创建规范的数据模型
  19. 2.4 使用Chameleon命名空间设计
  20. 2.5 对Schema进行版本控制
  21. 2.6 参考Schema
  22. 2.7 常见Schema类型
  23. 2.8 根据单个Schema验证XML文档
  24. 2.9 根据多个Schema验证XML文档
  25. 2.10 使用正则表达式限制Schema类型
  26. 2.11 使用Schema枚举
  27. 2.12 从Schema生成Java类
  28. 2.13 从Java生成Schema
  29. 2.14 在Ant中从XML Schema生成Java源文件
  30. 2.15 从Schema生成XML文档实例
  31. 2.16 定制从Schema生成Java类的方式
  32. 2.17 在编组和解组过程中根据Schema进行验证
  33. 2.18 在编组和解组过程中收集Schema验证事件
  34. 本章小结
  35. 第3章 使用XML和Java
  36. 3.1 概述
  37. 3.2 读取XML数据流
  38. 3.3 编写XML数据流
  39. 3.4 过滤XML流中的数据
  40. 3.5 从XML文档选择值
  41. 3.6 更新XML文档中的值
  42. 3.7 将Java对象转换成XML文档实例
  43. 3.8 将XML文档实例转换成Java对象
  44. 3.9 从XML文档生成Schema
  45. 3.10 不使用JAXB将XML转换成Java
  46. 3.11 在JAXB中自定义代码生成
  47. 3.12 在Linux上查找包含给定类的JAR
  48. 3.13 透明替换XML文件
  49. 本章小结
  50. 第二部分 Web服务
  51. 第4章 准备工作
  52. 4.1 概述
  53. 4.2 使用公开的Web服务进行测试
  54. 4.3 安装Metro
  55. 4.4 安装Oracle WebLogic
  56. 4.5 创建和部署最简单的Web服务
  57. 4.6 创建服务并将其部署到WebLogic
  58. 4.7 设置Maven 2服务和客户端项目
  59. 4.8 理解WSDL
  60. 4.9 使用NetBeans中的引用来生成Web服务客户端
  61. 4.10 通过Metro监控SOAP流量
  62. 4.11 通过TCPMon监控SOAP流量
  63. 第5章 基于SAAJ的Web服务
  64. 5.1 概述
  65. 5.2 创建带有限定名称的SOAP元素
  66. 5.3 创建完整的SOAP消息
  67. 5.4 将SOAP响应写出到输出流
  68. 5.5 基于现有的SOAP信封创建Web服务客户端
  69. 5.6 从SOAP消息提取内容
  70. 5.7 使用原始XML源和DOM创建Web服务客户端
  71. 5.8 添加MIME头
  72. 5.9 添加命名空间声明
  73. 5.10 指定SOAPAction
  74. 5.11 向元素添加属性
  75. 5.12 从SOAP消息去掉头
  76. 5.13 向SOAP请求添加头
  77. 5.14 访问所有SOAP头元素
  78. 5.15 向传出的SOAP消息添加附件
  79. 5.16 访问传入的附件数据
  80. 5.17 在没有WSDL的情况下连接到SAAJ端点
  81. 5.18 使用SOAP Actor
  82. 5.19 通过Dispatch进行异步调用
  83. 5.20 在客户端基于Schema验证载荷
  84. 5.21 提供基于SAAJ的Web服务
  85. 5.22 发送和接收SOAP故障
  86. 本章小结
  87. 第6章 用JAX-WS创建Web服务应用程序
  88. 6.1 概述
  89. 6.2 从命令行调用Web服务
  90. 6.3 使用JAX-WS注解名称属性
  91. 6.4 调用最简单的Web服务
  92. 6.5 创建客户端代理
  93. 6.6 从Servlet或EJB使用Web服务
  94. 6.7 从JSP使用Web服务
  95. 6.8 在SOAP消息中使用JAXB注解实例
  96. 6.9 在Maven项目中使用wsimport
  97. 6.10 在wsgen和wsimport中处理版本错误
  98. 6.11 向SOAP请求添加头
  99. 6.12 截取请求以执行特定于协议的工作
  100. 6.13 拦截请求以对载荷执行操作
  101. 6.14 多个处理程序调用之间共享数据
  102. 6.15 在请求中传递二进制数据
  103. 6.16 在SOAP消息中使用二进制数据
  104. 6.17 在客户端启用二进制优化
  105. 6.18 使用Metro根据Schema验证SOAP载荷
  106. 6.19 对JAX-WS客户端实现异步调用
  107. 6.20 覆盖SEI中的端点地址
  108. 本章小结
  109. 第7章 提供基于SOAP的Web服务
  110. 7.1 概述
  111. 7.2 组装用于部署的服务
  112. 7.3 确定服务开发模型
  113. 7.4 选择编码、使用和参数样式
  114. 7.5 基于Java服务端点实现生成WSDL和可移植结果
  115. 7.6 创建基本的Web服务
  116. 7.7 指定命名空间
  117. 7.8 创建Web服务操作
  118. 7.9 指定Web服务消息部分
  119. 7.10 指定操作返回值
  120. 7.11 定义无参数操作
  121. 7.12 定义带有Void返回类型的操作
  122. 7.13 创建使用基于自定义WSDL和自定义Schema的复杂类型的Web服务
  123. 7.14 指定SOAP绑定样式、使用和参数样式
  124. 7.15 配置标准自定义绑定
  125. 7.16 从服务排除Public方法
  126. 7.17 创建带有XML视图的服务提供类
  127. 7.18 实现服务器端处理程序链
  128. 7.19 提供有状态的服务
  129. 7.20 添加带有方法参数的头
  130. 7.21 访问服务中的传入头参数
  131. 7.22 为SOAP操作或WS-Addressing操作提供值
  132. 7.23 优化服务器上二进制内容的传输
  133. 7.24 获得和共享有关用户和请求的数据
  134. 7.25 通过Holder<T>使用头引用
  135. 本章小结
  136. 第8章 REST式Web服务
  137. 8.1 概述
  138. 8.2 使用Servlet在HTTP服务上创建POX
  139. 8.3 使用JAX-WS创建REST式服务
  140. 8.4 使用套接字创建REST式服务的客户端
  141. 8.5 应用:使用SSL、Atom发布和Google Finance REST API
  142. 8.6 创建Jersey JAX-RS实现
  143. 8.7 使用Eclipse和Tomcat创建Jersey项目
  144. 8.8 使用Jersey创建Hello World程序
  145. 8.9 为同一类型的多个资源创建单一路径
  146. 8.10 在路径模板中限制值的结构
  147. 8.11 访问查询参数
  148. 8.12 在响应中将自定义类型汇集到XML中
  149. 8.13 为同一资源提供不同的具象
  150. 8.14 创建资源
  151. 8.15 使用表单和URI工作
  152. 8.16 使用SAAJ访问REST式服务
  153. 8.17 在具象上设置元数据
  154. 8.18 删除资源
  155. 8.19 重定向到其他服务
  156. 8.20 访问HTTP头
  157. 8.21 使用Cookie工作
  158. 8.22 使用异常和响应状态码
  159. 8.23 使用WADL
  160. 8.24 使用自定义Reader和Writer与资源交互
  161. 本章小结
  162. 第三部分 业务流程
  163. 第9章 使用BPEL编排服务
  164. 9.1 概述
  165. 9.2 确定业务设计方法
  166. 9.3 选择业务流程建模语言
  167. 9.4 获取Apache ODE BPEL引擎
  168. 9.5 将流程部署到Apache ODE
  169. 9.6 理解BPEL流程基础
  170. 9.7 使用免费的图形设计器创建BPEL流程
  171. 9.8 创建调用伙伴服务的BPEL流程
  172. 9.9 将BPEL流程部署到OpenESB的BPEL服务引擎 509
  173. 9.10 测试已经部署的BPEL流程
  174. 9.11 安装Active Endpoints BPEL设计器
  175. 9.12 安装Active Endpoints BPEL引擎
  176. 9.13 在Active Endpoints设计器中创建BPEL流程
  177. 9.14 将流程部署到Active Endpoints服务器
  178. 9.15 使用网络服务伙伴
  179. 9.16 从BPEL流程调用伙伴服务
  180. 9.17 使用BPEL变量操作数据
  181. 9.18 使用文字
  182. 9.19 合并值
  183. 9.20 根据运行时条件选择要执行的活动
  184. 9.21 在一个序列中执行多个活动
  185. 9.22 使用逻辑划分分组活动
  186. 第10章 高级BPEL编排
  187. 10.1 概述
  188. 10.2 并行执行活动
  189. 10.3 同步并行执行的活动
  190. 10.4 什么也不做
  191. 10.5 在特定时间点执行活动
  192. 10.6 在指定延时后执行活动
  193. 10.7 选择性的事件处理
  194. 10.8 异常处理
  195. 10.9 显式抛出异常
  196. 10.10 停止流程
  197. 10.11 对BPEL消息数据执行XSL转换
  198. 10.12 校验带内消息数据
  199. 10.13 相关集
  200. 10.14 循环
  201. 10.15 给业务流程添加人工任务
  202. 10.16 从BPEL调用REST式网络服务
  203. 本章小结
  204. 第11章 SOA管理
  205. 11.1 概述
  206. 11.2 分配角色
  207. 11.3 创建SOA路线图
  208. 11.4 跟踪服务
  209. 11.5 确定服务的数据所有权方案
  210. 11.6 在SOA中处理遗留程序和异质性
  211. 11.7 文档化服务
  212. 11.8 建立服务注册表
  213. 11.9 打包相关服务
  214. 11.10 撤销服务
  215. 11.11 浏览UDDI注册表
  216. 11.12 编程查询UDDI注册表
  217. 11.13 理解SOA投资收益率
  218. 第四部分 互操作性和服务质量
  219. 第12章 Web服务的互操作性
  220. 12.1 概述
  221. 12.2 处理数组
  222. 12.3 抽象寻址
  223. 12.4 在Java服务中使用寻址
  224. 12.5 在客户端上显式启用寻址
  225. 12.6 在客户端上显式地禁用寻址
  226. 12.7 在WSDL的传输层上进行抽象寻址
  227. 12.8 对异常寻址
  228. 12.9 在Visual Studio中创建.NET网络服务
  229. 12.10 在C#中创建.NET网络服务
  230. 12.11 创建.NET网络服务
  231. 12.12 为网络服务创建Ruby客户端
  232. 12.13 为.NET服务创建Ruby客户端
  233. 12.14 遵守基本概要
  234. 12.15 基本概要符合度的自动化测试
  235. 12.16 互操作性最佳做法
  236. 12.17 使用模块化的WSDL
  237. 第13章 服务质量
  238. 13.1 概述
  239. 13.2 理解可靠的消息传输
  240. 13.3 使用可靠的消息传输配置Java Web服务
  241. 13.4 使用可靠的消息传输配置Java客户端
  242. 13.5 配置Java Web服务在WebLogic上具有可靠的消息传输
  243. 13.6 WebLogic可靠消息传输错误处理器
  244. 第14章 企业服务总线
  245. 14.1 概述
  246. 14.2 什么是ESB
  247. 14.3 作为模式集合的ESB
  248. 14.4 JBI
  249. 14.5 商业ESB
  250. 14.6 开源ESB
  251. 本章小结
书名:Java SOA Cookbook中文版
作者:Eben Hewitt
译者:孙燕, 陈伊文, 王俊华 译
国内出版社:清华大学出版社
出版时间:2011年07月
页数:679
书号:978-7-302-25297-9
原版书书名:Java SOA Cookbook
原版书出版商:O'Reilly Media
Eben Hewitt
 
Eben Hewitt是美国一家资产达数十亿的零售公司的技术架构师,关注设计和构建该公司的SOA。他有10年的IT从业经验,并拥有多个行业证书,包括Sun认证的“Java Web Services Developer for EE 5”。Eben是JavaOne受欢迎的SOA发言人,而且在此之前,他已经编写了4本编程书籍和多篇行业文章。最近,他为O’Reilly的Richard Monson-Haefel主编的“97 Things Every Software Architect Should Know”撰稿(http://oreilly.com/catalog/9780596522698)。
 
 
本书封面上的动物是一只色彩斑斓的长臂天牛(长夹大天牛)。色彩斑斓的长臂天牛分布在墨西哥至南美的区域,是世界上最长的一种昆虫。它们属于长臂昆虫科,英文名Cerambycidae。这个科有各种不同的成员,超过20000个物种,比东半球物种数量的一半还略微多一点。这种美丽的昆虫受到亚马逊儿童的宠爱。
它们的特点是具有极其修长的触角和腿部,其长度和它们的身长相比有过之而不及。雄性昆虫的前腿近3英寸长,而整个身体8英寸长——比人的手还要长些。雄性修长的腿部除了用作对雌性的性引诱物外,还有助于在树枝之间飞行和爬行。尽管它们的颜色很惹眼,但它们还是能将自己有效地隐藏在布满青苔和菌类的热带树木(如无花果树)的树干之间。
色彩斑斓昆虫在白天很活跃,但在晚上会受到灯光的吸引。雌性喜欢在带有多孔菌的树干和圆木上下蛋,它们可以提供很好的隐蔽。在下蛋之前,雌性会在树皮上咬开一个大约0.8英寸宽、0.3英寸深的口子,在2~3天的下蛋时间里,会下15~20枚蛋。在幼虫孵化过程中,它们钻入到木头中。长到7~8个月大时,会形成5英寸的幼虫隧道,在这个隧道里面,它们挖了一个巢,幼虫们在其中成长。四个月后就形成了成年昆虫,它们通过咬的方式从木头钻出来。生命周期为一年。
这种昆虫的身上通常寄生有一种微小的名为拟蝎的蜘蛛类动物,它们生活在长臂天牛的彩色翅膀之下。这些微小蝎使用该昆虫找到新的食物源并用以对付潜在的对手。为了防止长臂天牛飞行时自己跌落下来,这些蝎通过其爪中钳似腺分泌出的柔软光滑细丝将自身系到长臂天牛的腹部上。当到达一个合适的新位置时,它们用一股新的细丝连接到目标位置并从长臂天牛身上滑落。