-
Weak Chapter on REST Jun 3, 2009 (11 of 13 found this helpful)
I bought this book primarily to read about writing RESTful Web Services with JAX-RS which is one of the two topics mentioned in the product description.
I must say I am really disappointed with the coverage of this topic. Not many pages are devoted to it, and there are also some flaws in the presentation of REST and in the examples. For example when describing HTTP GET, the author equals "side-effect-free" with "idempotent", which is wrong. The Representations (the XML-formats) are strange, for GET they are serialized Java-objects without any semantics, for POST they are XMLs with the verb as the root-tag.
The presentation of JAX-RS (Jersey) is only 4 pages, and far from what I need to do something useful.
As for the rest of the book I don't know, so the rating is based on the presentation of REST and JAX-RS.
I bought this book together with the "Java SOA Cookbook" by Eben Hewitt, and I also have read "RESTful Web Services" by Leonard Richardson. The chapter on REST and JAX-RS in the "Java SOA Cookbook" if faaar better, and "RESTful Web Services" is a good general introduction to REST.
-
HITTING THE ROAD RUNNING!! Apr 19, 2009 (2 of 2 found this helpful)
Are you a programmer who is interested in developing Java web services and Java clients against web services, whatever the implementation language? If you are, then this book is for you. Author Martin Kalin has done an outstanding job of writing a book that is a code-driven introduction to JAX-WS, the framework of Choice for Java web services, whether SOAP-based or REST-style.
Kalin, begins by focusing on the basics of writing, deploying, and consuming SOAP-based services in core Java. Next, the author focuses on the service contract, which is a WSDL document in SOAP-based services. Then, he introduces you to SOAP and logical handlers, which give the service-side and client-side programmer direct access to either the entire SOAP message or just its payload. The author continues by opening up with a technical analysis of what constitutes a REST-style service and moves quickly to code examples. Next, he gives you an overview of security requirements for real-world web services, SOAP-based and REST-style. Then, the author presents a survey of what comes with a Java Application Server: an EJB container, a messaging system, a naming service, an integrated database system, and so on. Finally, the author looks at the controversy surrounding SOAP-based and REST-style web services.
This most excellent book interprets JAX-WS broadly. More importantly, it includes leading-edge developments such as the Jersey project for REST-style web services, officially known as JAX-RS.
-
Great introduction to Java web services Mar 29, 2009 (4 of 5 found this helpful)
As an alumnus of the university at which the well-known Richard Johnsonbaugh / Martin Kalin duo teach as professors, this reviewer is aware of the fact that these gentlemen typically receive positive feedback by their students (they teach at the undergraduate level and so this reviewer cannot attest to this feedback). However, teaching is different than writing, and this reviewer has generally not had positive experiences with their writings (see for example the first review by this reviewer, on "Schaum's Outline of Discrete Mathematics", in which this reviewer recommended that book as an alternative to Richard Johnsonbaugh's "Discrete Mathematics: Fourth Edition"). The book at hand, "Java Web Services: Up and Running", is a break from this stereotype because it is a great introduction to Java web services from various angles. While Kalin provides enough theory to propel the reader into good understanding of the programming material, this book is essentially a programming text, and because the bulk of the content consists of working programming examples, the risk that the complaints often heard by readers about lack of practical code might arise should be alleviated. Another strength of this book is the use of many of the latest implementations of Java libraries in this space, although with any technical text of this genre the field is moving quickly and so it is at risk of becoming obsolete from an implementation perspective in the near future (although just partially, because many libraries are backward-compatible, at least to some extent). For example, the cover of this text states that it includes material on JAX-WS 2.1, but the reference implementation of the technology, Glassfish Metro, is already planning a May 2009 release of JAX-WS 2.2, just a few months after book publication. Another strength of this book is its coverage of web services security in easy to understand language, including transport level security, message level security, and the WS-Security specification, with working examples throughout the chapters dedicated to these topics. While XML configuration files do come into play to some respect within the discussions, the focus is on programmatic use of associated libraries. This provides the benefit to those new to these technologies of understanding what is happening under the covers that are offered by technologies now being offered by various IDEs. While Kalin does mention that there are tradeoffs to be made in using these libraries programmatically, however, it is very curious that the Spring Framework is not mentioned (see my review for "Spring in Action" by Craig Walls, for example). Kalin discusses the fact that message level security is more tedious than transport level security, and seems to prefer HTTPS to avoid this additional complexity, but since only programmatic, reference implementations are discussed the benefits of using Spring are completely missed. And as someone experienced with Apache Axis, Apache Axis2, Apache CXF, and Glassfish Metro, the beneficial abstraction that Spring provides is something this reviewer thinks that those new to Java web services should not ignore after they understand the material presented in this text. But for what this text claims to be, a "thorough introduction to Java's APIs for both XML Web Services (JAX-WS) and RESTful Web Services (JAX-RS)" that "takes a clear pragmatic approach to these technologies by providing a mix of architectural overview, complete working code examples, and short yet precise instructions for compiling, deploying, and executing an application", this book hits the bull's-eye.
-
Details AND Usability...excellent work Apr 30, 2009 (1 of 1 found this helpful)
A very practical and useful, yet comparatively short book that covers what you really need to know and focuses on making JAX-WS and JAX-RS (REST) work. The author does an excellent job on this subject. O'reilly publishing has been slow to release new Web Services titles so this was great to see. Detailed explanations of RPC and DOC LITERAL styles, the differences that result in generated WSDL between the two, JAXB, and how to work with Handlers to access or manipulate SOAP Header data are CLEARLY explained in the first 3 chapters alone. What makes the book so good is that the author focuses in on the HOW and WHY getting right to the code and explaining clearly what is being done. My only suggestion thus far would be to add a section covering the use Ant for JAX-WS tasks used in building and packaging the applications. Other than that, the book is outstanding.
-
This book on Web services actually starts at the beginning Apr 5, 2009 (2 of 3 found this helpful)
I've found this to be a very easy to read introductory book on Web services, precisely because it begins at the beginning and even answers the question "What are web services and what is their appeal?" Web services support language transparency because the service and its clients need not be written in the same language. It is this language transparency that is the key to web service interoperability, and is the basis of the appeal of web services as they are now defined. To underscore this appeal, clients against Java web services are written in various languages such as CSharp, Perl, and Ruby, and Java clients are demonstrated that consume services written in other languages, including languages unknown. For example, The very first example in the book is a SOAP-based web service written in Java that has clients in Perl, Ruby, and Java.
Chapter two studies SOAP and the WSDL (Web Service Definition Language) closely, and illustrates how the WSDL can generate Java classes on the client side. Also of use in writing Java clients is the wsimport utility and the JAX-B (Java API for XML-Binding), both of which are covered here.
The book goes into the details of coding web services with both SOAP and REST, providing a chapter on each of these. There is a separate chapter that deals with the ongoing REST versus SOAP debate. The jist of it is that writing web services with the SOAP protocol is too complex and SOAP services can appear over-structured, while REST is based on the HTTP protocol, which makes interoperability both simple and easy. However, people must not be completely satisfied with what HTTP brings to the table since the SOAP protocol continues to thrive. I like how the author kept the technical implementation chapters separate from the debate chapter, thus adding to the clarity of both subjects.
Since Web services require security in this day and age, that topic is discussed next. The technologies available for securing web services are explored. The emphasis is on the subjects of wire-level security, user authentication and authorization, and WS-Security (WSS), which is a collection of protocols that specify encryption and decryption of information. This is a topic that is often brushed over or kept theoretical in coding-centric books such as these, but the author gets practical here and does not just stay at a high level when discussing the subject.
The book next departs from the Endpoint publisher and the Tomcat web container which has been the deployment mechanism shown so far and discusses how web services can be deployed using a Java Application Server (JAS). Glassfish is discussed at length.
The final chapter is the one I mentioned earlier on the SOAP-based versus REST-style web services debate. This chapter is written essay-style and largely avoids coding details. It gives a short history of distributed computing to present a clearer view of the choices involved in developing web services.
This book is very comprehensive incorporating a great deal of code, definitions, explanations, and well-done diagrams. This is a fast-moving field in which books become out-of-date quickly, and it is good to have a very recent, readable, and comprehensive text for newcomers. The only prerequisites that I can see are to have an understanding of programming in the Java language, XML, and the basics of data communication across a network.