Java Web服务:构建与运行(影印版)
Java Web服务:构建与运行(影印版)
Martin Kalin
这本实例众多的书提供了对Java的API的一个全面介绍,包括针对XML Web服务的JAX-WS和针对RESTful Web服务的JAX-RS。
《Java Web服务:构建与运行》通过提供混合架构概述、完整的工作代码示例以及短而精确的编译、部署和执行应用程序的指示,采用明确实用的方法来处理这些技术。你将学习如何从头开始编写Web服务以及集成现有服务到你的Java应用程序中。有了这本书,你将:
· 理解基于SOAP的和REST样式的服务的区别
· 编写、部署和使用基于SOAP的核心Java服务
· 理解Web服务描述语言(WSDL)服务契约
· 认识SOAP消息的结构
· 学习如何交付基于Java的RESTful Web服务和消耗商业RESTful服务
· 了解对基于SOAP和基于REST的Web服务的安全要求
· 学习如何在各种环境下部署JAX-WS服务
不管是学生还是有经验的程序员,当你需要立即运用这些技术展开工作时,《Java Web服务:构建与运行》都是你需要的一本理想的简明指南。
“《Java Web服务:构建与运行》有很多我发现非常实用的实例,从使用Amazon Associates Web服务到有很好的图解和安全说明以及加密密码的关于安全的一章,还包括使用证书的示例,这部分内容我还没在其他书中见过。”
——Greg Ostravich,Denver Java用户组主席
Martin Kalin, 德保罗大学计算机和数字媒体学院教授,拥有西北大学的博士学位。他撰写过关于C语言、C++和Java的书,并参与开发过大型分布式系统中的进程调度和产品配置。
  1. Preface
  2. 1. Java Web Services Quickstart
  3. What Are Web Services?
  4. What Good Are Web Services?
  5. A First Example
  6. The Service Endpoint Interface and Service Implementation Bean
  7. A Java Application to Publish the Web Service
  8. Testing the Web Service with a Browser
  9. A Perl and a Ruby Requester of the Web Service
  10. The Hidden SOAP
  11. A Java Requester of the Web Service
  12. Wire-Level Tracking of HTTP and SOAP Messages
  13. What’s Clear So Far?
  14. Key Features of the First Code Example
  15. Java’s SOAP API
  16. An Example with Richer Data Types
  17. Publishing the Service and Writing a Client
  18. Multithreading the Endpoint Publisher
  19. What’s Next?
  20. 2. All About WSDLs
  21. What Good Is a WSDL?
  22. Generating Client-Support Code from a WSDL
  23. The @WebResult Annotation
  24. WSDL Structure
  25. A Closer Look at WSDL Bindings
  26. Key Features of Document-Style Services
  27. Validating a SOAP Message Against a WSDL’s XML Schema
  28. The Wrapped and Unwrapped Document Styles
  29. Amazon’s E-Commerce Web Service
  30. An E-Commerce Client in Wrapped Style
  31. An E-Commerce Client in Unwrapped Style
  32. Tradeoffs Between the RPC and Document Styles
  33. An Asynchronous E-Commerce Client
  34. The wsgen Utility and JAX-B Artifacts
  35. A JAX-B Example
  36. Marshaling and wsgen Artifacts
  37. An Overview of Java Types and XML Schema Types
  38. Generating a WSDL with the wsgen Utility
  39. WSDL Wrap-Up
  40. Code First Versus Contract First
  41. A Contract-First Example with wsimport
  42. A Code-First, Contract-Aware Approach
  43. Limitations of the WSDL
  44. What’s Next?
  45. 3. SOAP Handling
  46. SOAP: Hidden or Not?
  47. SOAP 1.1 and SOAP 1.2
  48. SOAP Messaging Architecture
  49. Programming in the JWS Handler Framework
  50. The RabbitCounter Example
  51. Injecting a Header Block into a SOAP Header
  52. Configuring the Client-Side SOAP Handler
  53. Adding a Handler Programmatically on the Client Side
  54. Generating a Fault from a @WebMethod
  55. Adding a Logical Handler for Client Robustness
  56. Adding a Service-Side SOAP Handler
  57. Summary of the Handler Methods
  58. The RabbitCounter As a SOAP 1.2 Service
  59. The MessageContext and Transport Headers
  60. An Example to Illustrate Transport-Level Access
  61. Web Services and Binary Data
  62. Three Options for SOAP Attachments
  63. Using Base64 Encoding for Binary Data
  64. Using MTOM for Binary Data
  65. What’s Next?
  66. 4. RESTful Web Services
  67. What Is REST?
  68. Verbs and Opaque Nouns
  69. From @WebService to @WebServiceProvider
  70. A RESTful Version of the Teams Service
  71. The WebServiceProvider Annotation
  72. Language Transparency and RESTful Services
  73. Summary of the RESTful Features
  74. Implementing the Remaining CRUD Operations
  75. Java API for XML Processing
  76. The Provider and Dispatch Twins
  77. A Provider/Dispatch Example
  78. More on the Dispatch Interface
  79. A Dispatch Client Against a SOAP-based Service
  80. Implementing RESTful Web Services As HttpServlets
  81. The RabbitCounterServlet
  82. Requests for MIME-Typed Responses
  83. Java Clients Against Real-World RESTful Services
  84. The Yahoo! News Service
  85. The Amazon E-Commerce Service: REST Style
  86. The RESTful Tumblr Service
  87. WADLing with Java-Based RESTful Services
  88. JAX-RS: WADLing Through Jersey
  89. The Restlet Framework
  90. What’s Next?
  91. 5. Web Services Security
  92. Overview of Web Services Security
  93. Wire-Level Security
  94. HTTPS Basics
  95. Symmetric and Asymmetric Encryption/Decryption
  96. How HTTPS Provides the Three Security Services
  97. The HttpsURLConnection Class
  98. Securing the RabbitCounter Service
  99. Adding User Authentication
  100. HTTP BASIC Authentication
  101. Container-Managed Security for Web Services
  102. Deploying a @WebService Under Tomcat
  103. Securing the @WebService Under Tomcat
  104. Application-Managed Authentication
  105. Container-Managed Authentication and Authorization
  106. Configuring Container-Managed Security Under Tomcat
  107. Using a Digested Password Instead of a Password
  108. A Secured @WebServiceProvider
  109. WS-Security
  110. Securing a @WebService with WS-Security Under Endpoint
  111. The Prompter and the Verifier
  112. The Secured SOAP Envelope
  113. Summary of the WS-Security Example
  114. What’s Next?
  115. 6. JAX-WS in Java Application Servers
  116. Overview of a Java Application Server
  117. Deploying @WebServices and @WebServiceProviders
  118. Deploying @WebServiceProviders
  119. Integrating an Interactive Website and a Web Service
  120. A @WebService As an EJB
  121. Implementation As a Stateless Session EJB
  122. The Endpoint URL for an EBJ-Based Service
  123. Database Support Through an @Entity
  124. The Persistence Configuration File
  125. The EJB Deployment Descriptor
  126. Servlet and EJB Implementations of Web Services
  127. Java Web Services and Java Message Service
  128. WS-Security Under GlassFish
  129. Mutual Challenge with Digital Certificates
  130. MCS Under HTTPS
  131. MCS Under WSIT
  132. The Dramatic SOAP Envelopes
  133. Benefits of JAS Deployment
  134. What’s Next?
  135. 7. Beyond the Flame Wars
  136. A Very Short History of Web Services
  137. The Service Contract in DCE/RPC
  138. XML-RPC
  139. Standardized SOAP
  140. SOAP-Based Web Services Versus Distributed Objects
  141. SOAP and REST in Harmony
  142. Index
书名:Java Web服务:构建与运行(影印版)
作者:Martin Kalin
原版书出版商:O'Reilly Media
Martin Kalin
Martin Kalin has a Ph.D. from Northwestern University and is a professor in the
College of Computing and Digital Media at DePaul University. He has cowritten a series
of books on C and C++ and has written a book on Java for programmers. He enjoys
commercial programming and has codeveloped large distributed systems in process
scheduling and product configuration.
The animal on the cover of Java Web Services: Up and Running is a great cormorant
(Phalacrocorax carbo). This bird is a common member of the Phalacrocoracidae family,
which consists of about 40 species of cormorants and shags—large seabirds with
hooked bills, colored throats, and stiff tail feathers. The name “cormorant” is derived
from the Latin corvus marinus, or sea raven, because of its black plumage.
An adult cormorant is about 30 inches long and has a wingspan of 60 inches. It has a
long neck, a yellow throat, and a white chin patch. The cormorant has a distinctive way
of spreading its wings as it perches, which many naturalists believe is a way of drying
its feathers, although this explanation is disputed. The cormorant lives mainly near
Atlantic waters, on western European and eastern North American coasts, and particularly
on the Canadian maritime provinces. It breeds on cliffs or in trees, building nests
out of twigs and seaweed.
The cormorant is an excellent fisher, able to dive to great depths. In China and Japan,
among other places, fishermen have trained this bird using a centuries-old method, in
which they tie cords around the throats of the birds—to prevent them from
swallowing—and send them out from boats. The cormorants then catch fish in their
mouths, return to the boats, and the fishermen retrieve their catch. Alhough once a
successful industry, today cormorant fishing is primarily used for tourism.