Book review: Apache Axis2 Web Services, 2nd Edition
Z Jacek Laskowski - Wiki Projektanta Java EE
Apache Axis2 Web Services, 2nd Edition by Deepal Jayasinghe, Afkham Azeez (Packt, February 2011)
Plausible worthy reading - much mentioned, a few thoroughly explained
I have to say I'm not completely enamoured with this book, though eventually I managed to find Apache Axis2 Web Services, 2nd Edition quite appealing and informatory.
Having glanced over the table of contents I had instantaneously developed a liking for the book. Although it was about Apache Axis2 that I'm not very interested in (I'd rather pick up Apache CXF as the Web Services stack for barely explainable reasons) I decided to read the book to introduce myself to it. I assumed I could easily learn Axis2's features and quite a few assisting specifications and open source software. At the time I needed more coverage of JAX-WS and JAX-RS specifications, and it didn't really matter whether it's about Apache Axis2 or Apache CXF, or any other Web Services stack, provided it's not merely focused on a single product, but its entire ecosystem.
There are slightly more than 250 pages to read in 15 chapters covering introductory material to Web Services, in-depth coverage of Apache Axis2's architecture with its support for AXIOM, handlers, deployment and information models, each with its own chapter as well as more code-oriented chapters about writing Axis2 services, modules, using Client API, JAX-WS and JAX-RS Web Services. There are also 4 chapters that go beyond a simple use cases for Apache Axis 2 with clustering, enterprise integration patterns, advanced features and finally secure reliable Web Services. They usually covered at an acceptable, intermediate level.
Just for reading about WSDL 2.0's Message Exchange Patterns (MEPs), Axis 2 Object Model (AXIOM) and its pull parser technique, Jaxen, and the chapters 13-15 about the advanced features of Axis 2, I'd highly recommend the book. There are many other gems I very much enjoyed finding in the book - a few bits about WS-Reliable Messaging with Apache Sandesha2, WS-Coordination and WS-Atomic Transaction with Apache Kandula2, WS-Security with Apache Rampart and WS-Addressing or WS-Policy. There's also a half-page introduction to Apache Synapse, WSO2 ESB and OpenESB. They were all in the book explained enough to whet my appetite for more advanced explanation elsewhere. I had no troubles of taking it all in, but I think it's likely going to be a tough exercise for novices. I wish the book had provided more in-depth study.
I seem to have developed a feeling that Packt's books are usually an easy reading with interesting pieces scattered throughout pages and it used to have taken a while to combine them together for your benefit. The light writing style invites for a continuous reading, but it leaves much to improve. It's not uncommon to find entire sections with sentences that don't fit very well. Most of the chapters are not very much technical and don't delve into in-depth details. You can barely find a complete code listings. No build files, auxiliary tools to assist you should you find yourself stuck running a sample. It's not a book to turn to in such situations. The book serves very well as the first source of information about Apache Axis 2 and equips a reader with basic knowledge necessary to understand its architecture.
There were a few chapters I'd rather have read in a form of a source code. On the other hand, Chapter 12 was not very interesting and often boring for its configuration-description writing style. The figures are sparse and rarely support the reading. They usually add nothing to the book's understanding which I found more distracting than supportive. It's almost as a management summary or a teaser where one can get introduced to a topic with a few slightly more advanced references, if any.
It's just in Chapter 7 where the practical aspects of using Axis 2 surface. Don't let your hopes ride too far as the chapter "only skimmed through the contract first approach" (page 117). The chapter 8 is no different - there's a bit more code, but still not much. One can notice a progress in how much code is presented along the text. I doubt a novice can find it useful when useful bits are mentioned not explained.
Chapter 9 offered a great help to understand Axis 2 from the Client API's perspective. I seem mostly satisfied, but somehow felt disappointed about its light take on the topic, and not being very well-structured.
The chapter 11 about JAX-WS Web Services iterates over JAX-WS annotations and explained them one by one. Suffer no less as a great deal of patience may not be enough to cope with it. All of a sudden, the authors decided to include the entire XMLs of a WSDL that took pages for no benefit.
Architects should love the chapter 13. It's not very in-depth and technical, and goes through 6 integration patterns with tools like Apache Synapse, WSO2 ESB, Amazon EC2, Axis Savan, WS-* specs and few more. There's not much about Axis 2 itself, but its use in enterprise architectures.
If you want to feel the writing style of the book, turn to page 244 and read about REST. It takes just a half a page (!) I tend to like such a short explanation, but makes the book a tough reading for less experienced readers.
I was about to have skipped the last chapters, but frankly I found them engaging eventually. There was a concise explanation of MTOM, SwA and sending binary data with XML on page 248. It's why I often keep reading a chapter, even though nothing has shown it worthy so far. The book had plenty such pages.
There are a few typos, albeit they could hardly spoil the book's content - "quality of support" on page 10 should rather be "quality of service", "building from the scratch" on page 12 should be "building from scratch", the missing screenshot on page 83, the same figure on pages 33 and 97, "inbuilt" not "built-in" or uninitialized serviceContext on page 203 and 204. How came they weren't corrected during the editing process?
I certainly benefited from reading the book, but I would not be surprised for its inefficiency helping others.
