Everyone who opens a book about SOA and starts reading the foreword does not expect the first sentence to contain the phrase “..SOA is dead and it has failed to deliver its promised benefits…”. The authors of the book recognize that there are several misunderstandings regarding SOA. With this book they attempt to move beyond the hype and explain how SOA is not actually dead but it already powers the business processes of several enterprises.
The book is split into 5 distinct parts that allow different readers to skip what they already know and focus on what interests them most. People who know nothing about web services (or how JavaEE fits in) can read all of them sequentially. More advanced readers (such a software architects) will probably skip the first parts and focus only on 4 and 5. So while each part builds on top of the previous one, it is easy to distinguish what you already know and what don’t.
The first part serves as a historical overview. It explains how we have moved from the mainframe era, into the client-server model and lately in distributed architectures and the internet. For each era it shows how much progress has been made in the computing power of the clients and how this has transformed them from dumb terminals of the the past to compact mobile devices of the present.
Some basic networking concepts are introduced such as messaging and RPC while older technologies such as CORBA or DCOM are briefly mentioned.The point of this part is to show that after a long history of proprietary formats and protocols, XML emerged as the “lingua franca” of the internet. This essentially allows for interconnections between enterprises and organizations with an open format, even though internally legacy or closed systems might still be used.
The second part of the book contains the building blocks of SOA. It serves as a baseline for the rest of the book since it explains in high level terms SOAP, WSDL and UDDI. This part is filled with some excellent illustrations where the basic concepts of each technology is clearly depicted without showing any line of code. It is assumed that you know how XML works and you know what is an XML schema but other than that this part is an excellent reference for business analysts who always wanted to learn about web services without diving into a specific implementation technology.
More advanced readers will find value in the last two chapters of this part. Chapter 7 introduces the concept of orchestration (connecting multiple web services together) and workflows (how information moves from one webservice to the other). BPEL is also briefly touched. Chapter 8 holds a list of the WS-* specifications that were defined in order to add reliability, security and other extensions on top of the basic WS infrastructure. There are no complex implementation details, but the offerings behind each specification are mentioned along with why they are needed.
At this point it should be clear that parts 1 and 2 are technology agnostic. Their contents are perfectly valid if you intend to deploy Web services using any other technology such as .NET. Therefore part 3 serves as quick overview of the Java EE platform and the services it offers to developers. Most users who are familiar with Java EE will skip some chapters from this part. But for the rest it contains a crash course on the basic building blocks, such as servlets, JSP, JSTL and JSF while the new JPA/EJB3 technologies that are specific to JavaEE 5 are also outlined. If you are not familiar with any of this however, you need to look at other books that fully cover them.
The most important section here are the last two chapters. Chapter 12 shows how the new annotations (@Webservice, @Webmethod) allow a simple (POJO) class to transform into a web service. Easy conversion from XML to java objects and back is also covered. Chapter 13 introduces the concept of the Enterprise Service Bus (ESB) and how it serves its central role is SOA. Again JavaEE already contains the appropriate technologies (JBI) however there are no technical details or information on the implementation mechanics.
Part 4 is the “meat” of the book and if you only read one part from this book, this should be it. The first chapters explain who Web services fit into the familiar N-tier architecture of most business applications. While specific Java technologies are mentioned (EJB, JSF) the text is again accompanied with high level illustrations (some of them are UML diagrams) that show a “bird’s eye” view of how everything works. Most importantly chapter 16 contains a list of SOA design patterns (similar to the established coding design patterns) that are split in several
categories such as Message Exchange, Conversation, Security et.c. For each pattern a thorough analysis is given along with illustrated examples. Chapter 16 is essentially the “gist” of this book. It shows that SOA is not something abstract or marketing hype. It serves some very specific needs and correctly applying SOA is possible and feasible without being rocket science.
The final part of the book is a case study on the Open Travel Alliance (OTA) that includes travel, cars and hotel agencies. This part serves as a real life example on how SOA can replace the clunky communication methods of the past with multiple incompatible technologies, into a single cohesive entity that provides excellent services to the customer with unprecedented flexibility. A walk trough using Netbeans Enterprise Pack is included in the last chapter, complete with screen shots and deployment instructions. This section is the only technical one that will appeal to software developers who are using JavaEE
To sum up, this is a great book which demystifies Web Services and shows real life, tangible results from the benefits of SOA. It is however a bit high level for developers. Its target audience is mainly business analysts, project managers or decision makers. You can read this book easily even if you are a .NET developer and want to know how JavaEE tackles similar issues. Novice Java architects can find great information in chapters 8 and 16. But for experienced Java EE developers this book is essentially a stepping stone and you need to look to additional sources in order to learn the details of the various Java EE technologies. There is also no mention on Axis2 or REST webservices in this book.
K.Kapelonis