Tagged: web services

Book Review: Java SOA Cookbook

This is a review of the book Java SOA Cookbook by Eben Hewitt

Not having much experience with “SOA”, other than a horrible experience with Apache Axis years ago, I figured it would be good to pick up a book that covers the latest and greatest in this field. “Java SOA Cookbook” is quite the publication. My impression was that this book covered just about everything someone would need to be exposed to, to either get started in the SOA world, or if you are already up to your neck in it and want a good desk reference. This book appears to be it. From SAAJ to JAX-WS, BPEL, ESBs, etc etc, this covers it all. From the very high level 50,000 architecture view (i.e modeling, governance), all the way down to the minutia of various XML Schema design patterns, vendor specific HOWTOs, and details of using TCPMon to monitor SOAP traffic, this book literally appears to cover all the bases.

In the traditional Orielly cookbook model, the book takes a problem solution approach. One of my favorite “problems” presented in the book, which is quite representative of what developers face when approaching the giant world of SOA, is worded as follows, and is VERY relateable!

“You need to start developing the web services for your SOA solution, but there are so many different pieces to put in place that you are not sure where to begin. You need to determine what has to be written by hand and what doesn’t.”

No **it… I loved this book!

Weighing in at ~700 pages, after reading this book I felt like I walked away with two things. First an overwhelming impression that the world of SOA is one of enormous complexity; and secondly, as with anything, when broken down to its smallest parts, anything can be accomplished and understood. This book does just that, and I highly recommend it to anyone who wants to get a solid understanding of SOA and secondly it would likely serve as a great desk reference for anyone who works in the SOA universe on a daily basis.

Side note, this book is heavily oriented to the traditional “big web-services” world (SOAP, WSDL, JAX-WS etc), however the author does give a good treatment to REST with a full chapter on it.

Recommended: YES

Skill level: Intermediate to advanced Java developers. I think this book would be beneficial to BOTH sides of the fence in the SOA world, those with little to no experience, all the way to those who build services on a daily basis.


Review: RESTful Web Services

restThis is a book review for “RESTful Web Services” by Leonard Richardson and Sam Ruby

If you want to get under the hood and really understand how to properly implement a RESTful web service then this book is for you. The treatment of the topic is excellent. After reading this book, I feel that so many folks out there writing “REST” apis, myself included, have written variants of a REST-RPC hybrid, versus a true REST implementation. REST after all in its true form is really a total change of mindset when it comes to creating a web-service and this book helps you get there. The author does not turn this into a REST vs. SOAP discussion but rather preps the reader quite well by exploring the history of web-services and very clearly explaining the differences between all the different approaches, and positives/negatives of each (RPC, REST-RPC, SOAP, WS-*, etc) Secondly the author give a primer on the basic tools used to implement REST clients in various languages by covering the various popular HTTP client libs out there (cURL, Apache HttpClient, rest-open-uri, libcurl etc). The author also presents a discussion and explanation of “Resource Oriented Architecture” and walks the reader through several example implementations (both Read-only and read-write) as well as the RESTful thought process behind the design. The author gives excellent treatment to the differences between when to use a PUT vs. POST and explains the rules around making that decision, which, can be difficult to understand which to use in the real world. The book also shows various ways of implementing a REST service when some of the HTTP methods simply are not available (primarily PUT/DELETE) due to your HTTP server setup. Lastly the book covers some server-side frameworks that are available and the one I found the most interesting, which I hope to work with soon, is the Java project called Restlet.

Readers will also find the HTTP status code and headers reference very valuable, as for each status code/header, the author gives very clear descriptions of their meaning in a RESTful web-service. Very valuable!

Recommeded? Yes, go get it today.
Skills: Java/Ruby/Python – intermediate to advanced.