I read this book as part of my switch to java. I've been building web sites for almost 10 years in other languages, and decided to use this book together with Learning Java as a hand-by-hand real world tutorial on how to integrate the tools, properly configure your source tree, run your tests, how to setup your MVC web framework, validation, etc. I think that as a beginning real-world supplement to a java learner like myself, this book succeeds brilliantly. I do not mind poor grammar that other people are complaining about, as I myself was not born in an English speaking country. I do appreciate author's opinionated and passionate approach to subjects they discuss, such as test driven development, their choice of WebWork over Struts, their usage of Ant and jUnit.
I actually did download and compiled (and ran) the PetSoar example, so those reviewers that claim the code does not compile must have not actually tried it. It does work! I started a project based off the PetSoar example, so it was of great help to have that source.
But, there are a couple of issues that I feel could have been done better/differently.
1. The authors use the in-memory database HSQLDB for all of their development. I understand that using in-memory database allows you to test persistence stuff from unit tests, but I would have like to see that done in ADDITION rather than INSTEAD OF a regular database, such as Oracle/PostgreSQL/MySQL.
2. Most web-based applications also have a need for some sort of backend/daemon processes. I saw no mention of how to implement those within the context of WebWork/xWork. For example, a background thread that polls database table for changes is a very common requirement for many apps.
3. Would be great to at least touch on some open source queue (JMS) based implementation, and its integration into a web app.
4. Integration with Resin was out of date by the time I tried it and did not work. I am using Tomcat and would have prefered authors to show how to develop pages without having to reload the context every time the change happens (from Eclipse/IDEA).
5. Description of WebWork/xWork and Hibernate could use extra 10-20 pages each. The IoC concept was not explained that well (I felt), especially considering that the book seems to be targeted at someone like myself, who may not be well accustomed to an alternative. xWork's limitation that only actions can be "aware" of component interfaces makes it hard to design complex object hierarchies, where an action may not be the best place to put all your business logic.
6. Diagrams! Database design, class relationships, please - use UML!! One picture is worth thousand words! Use them! :)
Anyway, I think this book is great, but if there is ever a 2nd edition, it could benefit a lot from getting a bit of face lift, more in-depth analysis on select technologies, and more digrams.