SOA Using Java Web Services / Edition 1

Paperback (Print)
Used and New from Other Sellers
Used and New from Other Sellers
from $1.99
Usually ships in 1-2 business days
(Save 96%)
Other sellers (Paperback)
  • All (16) from $1.99   
  • New (7) from $43.51   
  • Used (9) from $1.99   

Overview

Expert Solutions and State-of-the-Art Code Examples

SOA Using Java™ Web Services is a hands-on guide to implementing Web services and Service Oriented Architecture (SOA) with today’s Java EE 5 and Java SE 6 platforms. Author Mark Hansen presents in explicit detail the information that enterprise developers and architects need to succeed, from best-practice design techniques to state-of-the-art code samples.

Hansen covers creating, deploying, and invoking Web services that can be composed into loosely coupled SOA applications. He begins by reviewing the “big picture,” including the challenges of Java-based SOA development and the limitations of traditional approaches. Next, he systematically introduces the latest Java Web Services (JWS) APIs and walks through creating Web services that integrate into a comprehensive SOA solution. Finally, he shows how application frameworks based on JWS can streamline the entire SOA development process and introduces one such framework: SOA-J.

The book

  • Introduces practical techniques for managing the complexity of Web services and SOA, including best-practice design examples
  • Offers hard-won insights into building effective SOA applications with Java Web Services
  • Illuminates recent major JWS improvements–including two full chapters on JAX-WS 2.0
  • Thoroughly explains SOA integration using WSDL, SOAP, Java/XML mapping, and JAXB 2.0 data binding
  • Walks step by step through packaging and deploying Web services components on Java EE 5 with JSR-181 (WS-Metadata 2.0) and JSR-109
  • Includes specific code solutions for many development issues, from publishing REST endpoints to consuming SOAP services with WSDL
  • Presents a complete case study using the JWS APIs, together with an Ajax front end, to build a SOA application integrating Amazon, Yahoo Shopping, and eBay
  • Contains hundreds of code samples–all tested with the GlassFish Java EE 5 reference implementation–that are downloadable from the companion Web site, http://soabook.com.

Foreword
Preface

Acknowledgments
About the Author

Chapter 1: Service-Oriented Architecture with Java Web Services
Chapter 2: An Overview of Java Web Services
Chapter 3: Basic SOA Using REST
Chapter 4: The Role of WSDL, SOAP, and Java/XML Mapping in SOA
Chapter 5: The JAXB 2.0 Data Binding
Chapter 6: JAX-WS–Client-Side Development
Chapter 7: JAX-WS 2.0–Server-Side Development
Chapter 8: Packaging and Deployment of SOA Components (JSR-181 and JSR-109)
Chapter 9: SOAShopper: Integrating eBay, Amazon, and Yahoo! Shopping
Chapter 10: Ajax and Java Web Services
Chapter 11: WSDL-Centric Java Web Services with SOA-J
Appendix A: Java, XML, and Web Services Standards Used in This Book
Appendix B: Software Configuration Guide
Appendix C: Namespace
Prefixes
Glossary

References

Index

Read More Show Less

Product Details

  • ISBN-13: 9780130449689
  • Publisher: Prentice Hall
  • Publication date: 5/23/2007
  • Edition description: New Edition
  • Edition number: 1
  • Pages: 578
  • Sales rank: 1,212,922
  • Product dimensions: 6.90 (w) x 9.10 (h) x 1.10 (d)

Meet the Author

Mark Hansen, Ph.D., is a software developer, consultant, and entrepreneur. His company, Javector Software, provides consulting and software application development focused on Web services. Mark is also a content developer for Project GlassFish and has developed the open source SOA-J application framework for WSDL-centric Web services development.

Previously, Mark was a visiting scholar at MIT, researching applications for process and data integration using Web services technology. Prior to that, Mark was an executive vice president for Xpedior, Inc., a leading provider of e-business consulting services. He joined Xpedior when they acquired his consulting firm, Kinderhook Systems.

Mark founded Kinderhook in 1993 to develop custom Internet solutions for Fortune 1000 firms in the New York metropolitan area. Prior to founding Kinderhook Systems, Hansen was a founder and vice president of technology for QDB Solutions, Inc., a software firm providing tools for data integrity management in corporate data warehouses.

Mark's work has been featured in publications such as the Wall Street Journal, Information Week, Computer World, Database Management, Database Programming and Design, Business Communications Review, EAI Journal, and IntelligentEnterprise.

Mark earned a Ph.D. from the MIT Laboratory for Computer Science, a master's degree from the MIT Sloan School of Management and a bachelor's degree in mathematics from Cornell University.

Mark and his wife, Lorraine, live in Scarsdale, New York, with their three children, Elizabeth, Eric, and Emily.

Read More Show Less

Read an Excerpt

Java became a powerful development platform for Service-Oriented Architecture (SOA) in 2006. Java EE 5, released in May 2006, significantly enhanced the power and usability of the Web Services capabilities on the application server. Then Java SE 6, released in December 2006, incorporated the majority of those capabilities into the standard edition of the Java programming language.

Because robust Web Services technology is the foundation for implementing SOA, Java now provides the tools modern enterprises require to integrate their Java applications into SOA infrastructures.

Of course, Java has had basic Web Services capabilities for some time. JAX-RPC 1.0 was released in June 2002. J2EE 1.4, finalized in November 2003, included JAX-RPC 1.1. So what is significant about the latest versions of the Java Web Services (JWS) APIs?

The answers are power and ease of use. Programmers will find it much easier to build enterprise-class applications with Web Services in Java EE 5 than in J2EE 1.4. Evidence of that is contained in Chapters 9 and 10, which describe an application I developed to integrate online shopping across eBay, Yahoo! Shopping, and Amazon. It’s a pure Java EE 5 application, called SOAShopper, that consumes REST and SOAP services from those shopping sites. SOAShopper also provides its own SOAP and REST endpoints for cross-platform search, and supports an Ajax front-end. SOAShopper would have been a struggle to develop using J2EE 1.4 and JAX-RPC. With the new Java Web Services standards, it was a pleasure to write.

This book focuses on the following standards comprising the new Java Web Services:

  • JAX-WS 2.0 JSR 224—The Java API for
  • JAXB2.0 JSR 222—The Java Architecture for
  • WS-Metadata JSR 181—Web Services Metadata for the Java Platform. WS-Metadata provides annotations that facilitate the flexible definition and deployment of Java Web Services.
  • WSEE 1.2 JSR 109—Web Services for Java EE. WSEE defines the programming model and run-time behavior of Web Services in the Java EE container.

These standards contain a few big improvements and many little enhancements that add up to a significantly more powerful Web Services programming platform. New annotations, for example, make it easier to write Web Services applications. And the delegation, in JAX-WS 2.0 JSR 224, of the Java/

Chapters 1 and 2 review these JWS standards in detail and describe how they improve on the previous set of JWS standards. Chapters 3 through 10 focus on writing code. To really understand the power and ease of use of the new Java Web Services, you need to start writing code. And that is primarily what this book is about. Chapters 3 through 10 are packed with code examples showing you how to best take advantage of the powerful features, avoid some of the pitfalls, and work around some of the limitations.

Chapter 11 looks to the future and offers some ideas, along with a prototype implementation, for a WSDL-centric approach to creating Web Services that might further improve JWS as a platform for Service-Oriented Architecture.

I started writing this book in 2002, when JAX-RPC first appeared on the scene. I soon ran into trouble, though, because I wanted it to be a book for programmers and I had a hard time writing good sample code with JAX-RPC. Four years later, when I started playing around with beta versions of the GlassFish Java EE 5 application server, I noticed that things had significantly improved. It was now fun to program Web Services in Java and I recommitted myself to finishing this book.

The result is a book with lots of code showing you how to deal with SOAP, WSDL, and REST from inside the Java programming language. Hopefully this code, and the writing that goes with it, will help you master Java Web Services and enable you to start using Java as a powerful platform for SOA.About This BookAn Unbiased Guide to Java Web Services for SOA

My primary goal in this book is to offer an unbiased guide to using the Java Web Services (JWS) standards for SOA. Of course, any author has a bias, and I admit to believing that the JWS standards are quite good. Otherwise, I would not have written this book.

Having admitted my bias, I also freely admit that JWS has weaknesses, particularly when it comes to the development approach known as Start from WSDL and Java. As you will see described in many different ways in this book, the JWS standards present a Java-centric approach to Web Services. That approach can be troublesome when you need to work with established SOA standards and map your Java application to existing

In such situations, it’s helpful to be able to take a WSDL-centric approach to Web Services development. In this area, JWS is less strong. Throughout the book, I point out those shortcomings, and offer strategies you can use to overcome them. Chapter 11 even offers a prototype framework, called SOA-J, that illustrates an alternative, WSDL-centric approach to Java Web Services.Written for Java Developers and Architects

This is a book for people who are interested in code—primarily the developers who write systems and the architects who design them. There are a lot of coding examples you can download, install, and run.

Being a book for Java programmers working with Web Services, the discussion and examples provided within assume you have a working knowledge of Java and a basic understanding of

Knowledge of J2SE 5.0 Is Assumed

This book assumes you have a basic understanding of J2SE 5.0—particularly the Java language extensions generics and annotations. If you are not familiar with generics or annotations, you can learn all you need to know from the free documentation and tutorials available at http://java.sun.com.

Don’t be intimidated by these topics. Generics and annotations are not hard to master—and you need to understand them if you are going to do Web Services with Java EE 5 and Java SE 6. The reason I have not written an introduction to generics and annotations as part of this book is that there is so much good, free information available on the Web. My focus in this book is to go beyond what is freely available in the online tutorials and documentation.Why GlassFish?

All the code examples presented in this book have been developed and tested using the GlassFish GLASSFISH open source Java EE 5 reference implementation. At the time I wrote this, it was the only implementation available. Now that the book is going to press, there are more, and the code should run on all these platforms without change. The only changes that will need to be made have to do with the build process where GlassFish specific tools (e.g., the wsimport WSDL to Java compiler, the asadmin deployment utility) are used.

I plan to test the example code on other platforms as they become available and to post instructions for running them on JBoss, BEA, IBM, and so on, as these vendors support the JWS standards. Check the book’s forthcoming Web site (http://soabook.com) for updates on progress with other platforms.

If you haven’t tried GlassFish, I suggest you check it out at https://glassfish.dev.java.net. It supports the cutting edge in Java EE and the community is terrific. In particular, I’ve had good experiences getting technical support on the mailing lists. It’s not uncommon to post a question there and have one of the JSR specification leads respond with an answer within minutes!Why Some Topics Aren’t Covered

Both SOA and Web Services are vast topics. Even when restricting the discussion to Java technology, it is impossible to cover everything in one book. Faced with that reality, I decided to focus on what I consider to be the core issues that are important to Java developers and architects. The core issues involve creating, deploying, and invoking Web Services in a manner that enables them to be composed into loosely coupled SOA applications.

In narrowing the book’s focus, it is inevitable that I will have disappointed some readers because a particular topic of interest to them isn’t covered. Some of these topics, pointed out by my reviewers, are listed here, along with the reasons why I didn’t include them.SOA Design Principles

This is not a book that covers the concepts and design philosophy behind SOA. It is a how-to book that teaches Java developers to code SOA components using Java Web Services. For a thorough introduction to SOA concepts and design, I recommend Thomas Erl’s Service-Oriented Architecture Erl.UDDI

UDDI is very important. And Java EE 5 includes the JAX-R standard interface to UDDI repositories. But JAX-R hasn’t changed since J2EE 1.4. And it is covered well in many other books and online tutorials. So, in an effort to keep this book to a manageable size, I have left it out. Enterprise Messaging

I wish I could have included a chapter on Enterprise Messaging. After all, it is a cornerstone of SOA. However, this book restricts itself to the capabilities provided by JWS. JWS does not support WS-Reliable Messaging WS-RM or any other SOAP/WSDL-oriented reliable messaging mechanism. Of course, Java EE 5 includes support for the Java Message Service API (JMS). And JMS is a useful tool for implementing SOA applications. But by itself, JMS isn’t a Web Services tool. So, in the interest of focus, I have left it out.WS-Addressing, WS-Security, and the Many Other WS-* Standards

Explaining the myriad standards for the Web Services stack would require many thousands of pages. Since these WS-* standards are not yet part of JWS, I have not covered them. In addition, my sense is that most Java developers are still mastering SOAP over HTTP. The need for a programmer’s guide to WS-* is probably several years away.Fonts and Special Characters

Courier font is used for Java types,

Italics indicate that a term is defined in the glossary. I don’t always use italics—only when a term may not have been used before and I think the reader might want to know it is defined in the Glossary. Italics are also used for emphasis. < > indicates an environment-specific directory location. Code Fragments in Text

The text contains lots of code fragments to illustrate the discussion. At the bottom of each code fragment is the file path showing where it came from. Moreover, there are line numbers to show you the line number in the file where the code comes from.

Read More Show Less

Table of Contents

Foreword xv

Preface xix

Acknowledgments xxvii

About the Author xxix

Chapter 1: Service-Oriented Architecture with Java Web Services 1

1.1 Am I Stupid, or Is Java Web Services Really Hard? 2

1.2 Web Services Platform Architecture 8

1.3 Java Web Services Standards: Chapters 2 through 8 18

1.4 The SOAShopper Case Study: Chapters 9 and 10 21

1.5 SOA-J and WSDL-Centric Development: Chapter 11 22

Chapter 2: An Overview of Java Web Services 25

2.1 The Role of JWS in SOA Application Development 26

2.2 A Quick Overview of the Ease-of-Use Features 36

2.3 JAX-WS 2.0 43

2.4 JAXB 2.0 54

2.5 WS-Metadata 2.0 73

2.6 WSEE 1.2 80

2.7 Impact of Other Java EE 5 Annotation Capabilities 82

2.8 Conclusions 84

Chapter 3: Basic SOA Using REST 85

3.1 Why REST? 85

3.2 XML Documents and Schema for EIS Records 88

3.3 REST Clients with and without JWS 97

3.4 SOA-Style Integration Using XSLT and JAXP for Data Transformation 114

3.5 RESTful Services with and without JWS 125

3.6 Conclusions 136

Chapter 4: The Role of WSDL, SOAP, and Java/XML Mapping in SOA 137

4.1 The Role of WSDL in SOA 138

4.2 The Role of SOAP in SOA 145

4.3 Dispatching: How JAX-WS 2.0 Maps WSDL/SOAP to Java Invocation 151

4.4 Working around Some JAX-WS 2.0 Dispatching Limitations 166

4.5 SOA Often Requires “Start from WSDL and Java” 175

4.6 Working around JAXB 2.0 Java/XML Mapping Limitations 182

4.7 Conclusions 194

Chapter 5: The JAXB 2.0 Data Binding 195

5.1 Binding versus Mapping 195

5.2 An Overview of the Standard JAXB 2.0 Java/XML Binding 199

5.3 Implementing Type Mappings with JAXB 2.0 209

5.4 A Recursive Framework for Type Mappings 217

5.5 Implementing Type Mappings with JAXB 2.0 Annotations 224

5.6 Implementing Type Mappings with the JAXB 2.0 Binding Language 235

5.7 Implementing Type Mappings with the JAXB 2.0 XmlAdapter Class 245

5.8 JAXB 2.0 for Data Transformation (Instead of XSLT) 256

5.9 Conclusions 262

Chapter 6: JAX-WS—Client-Side Development 265

6.1 JAX-WS Proxies 265

6.2 XML Messaging 285

6.3 Invocation with Custom Java/XML Mappings: An Example Using Castor Instead of JAXB 292

6.4 Asynchronous Invocation 297

6.5 SOAP Message Handlers 304

6.6 Conclusions 310

Chapter 7: JAX-WS 2.0—Server-Side Development 311

7.1 JAX-WS Server-Side Architecture 311

7.2 Start from WSDL Using a Service Endpoint Interface (SEI) 316

7.3 Providers and XML Processing without JAXB 320

7.4 Deploying Web Services Using Custom Java/XML Mappings 325

7.5 Validation and Fault Processing 329

7.6 Server-Side Handlers 343

7.7 Java SE Deployment with javax.xml.ws.Endpoint 347

7.8 Conclusions 355

Chapter 8: Packaging and Deployment of SOA Components (JSR-181 and JSR-109) 357

8.1 Web Services Packaging and Deployment Overview 359

8.2 Deployment without Deployment Descriptors 376

8.3 Using Deployment Descriptors 384

8.4 Automatic Deployment with GlassFish 402

8.5 Web Services Security 405

8.6 OASIS XML Catalogs 1.1 407

8.7 Wrapping Up 409

Chapter 9: SOAShopper: Integrating eBay, Amazon, and Yahoo! Shopping 411

9.1 Overview of SOAShopper 411

9.2 SOAShopper SOAP Services 417

9.3 An SOAShopper RESTful Service and the Standard XML Schema 423

9.4 Service Implementation 431

9.5 eBay and Amazon Services (SOAP) 434

9.6 Yahoo! Services (REST) 444

9.7 SOAShopper API and the Integration Layer 450

9.8 Conclusions about Implementing Real-World SOA Applications with Java EE 460

Chapter 10: Ajax and Java Web Services 463

10.1 Quick Overview of Ajax 464

10.2 Ajax Together with Java EE Web Services 468

10.3 Sample Code: An Ajax Front-End for SOAShopper 470

10.4 Conclusions about Ajax and Java EE 479

Chapter 11: WSDL-Centric Java Web Services with SOA-J 481

11.1 SOA-J Architecture 483

11.2 WSDL-Centric Development with SOA-J 486

11.3 Invocation Subsystem 493

11.4 Serialization Subsystem 503

11.5 Deployment Subsystem 514

11.6 Conclusions 519

Appendix A: Java, XML, and Web Services Standards Used in This Book 523

Appendix B: Software Configuration Guide 525

B.1 Install Java EE 5 SDK 526

B.2 Install Apache Ant 1.7.x 527

B.3 Install Apache Maven 2.0.x 527

B.4 Install the Book Example Code 528

B.5 Configure Maven 528

B.6 Configure Ant 530

B.7 Starting and Stopping the GlassFish Server 532

B.8 Test the Installation by Running an Example 532

B.9 Build and Deploy the SOAShopper Case Study (Chapters 9 and 10) 534

B.10 Build and Deploy the SOA-J Application Framework (Chapter 11) 535

B.11 Install Java SE 6 (Optional) 535

Appendix C: Namespace Prefixes 537

Glossary 539

References 555

Index 561

Read More Show Less

Preface

Java became a powerful development platform for Service-Oriented Architecture (SOA) in 2006. Java EE 5, released in May 2006, significantly enhanced the power and usability of the Web Services capabilities on the application server. Then Java SE 6, released in December 2006, incorporated the majority of those capabilities into the standard edition of the Java programming language.

Because robust Web Services technology is the foundation for implementing SOA, Java now provides the tools modern enterprises require to integrate their Java applications into SOA infrastructures.

Of course, Java has had basic Web Services capabilities for some time. JAX-RPC 1.0 was released in June 2002. J2EE 1.4, finalized in November 2003, included JAX-RPC 1.1. So what is significant about the latest versions of the Java Web Services (JWS) APIs?

The answers are power and ease of use. Programmers will find it much easier to build enterprise-class applications with Web Services in Java EE 5 than in J2EE 1.4. Evidence of that is contained in Chapters 9 and 10, which describe an application I developed to integrate online shopping across eBay, Yahoo! Shopping, and Amazon. It’s a pure Java EE 5 application, called SOAShopper, that consumes REST and SOAP services from those shopping sites. SOAShopper also provides its own SOAP and REST endpoints for cross-platform search, and supports an Ajax front-end. SOAShopper would have been a struggle to develop using J2EE 1.4 and JAX-RPC. With the new Java Web Services standards, it was a pleasure to write.

This book focuses on the following standards comprising the new Java Web Services:

  • JAX-WS 2.0 JSR 224—The Java API for XML-Based Web Services. The successor to JAX-RPC, it enables you to build and consume Web services with Java.
  • JAXB 2.0 JSR 222—The Java Architecture for XML Binding. Tightly integrated with JAX-WS, the JAXB standard controls how Java objects are represented as XML.
  • WS-Metadata JSR 181—Web Services Metadata for the Java Platform. WS-Metadata provides annotations that facilitate the flexible definition and deployment of Java Web Services.
  • WSEE 1.2 JSR 109—Web Services for Java EE. WSEE defines the programming model and run-time behavior of Web Services in the Java EE container.

These standards contain a few big improvements and many little enhancements that add up to a significantly more powerful Web Services programming platform. New annotations, for example, make it easier to write Web Services applications. And the delegation, in JAX-WS 2.0 JSR 224, of the Java/XML binding to JAXB 2.0 JSR 222 greatly improves the usability of JAX-WS as compared with JAX-RPC. The deployment model has been greatly simplified by WS-Metadata 1.0 JSR 181 and an improved 1.2 release of WSEE JSR-109.

Chapters 1 and 2 review these JWS standards in detail and describe how they improve on the previous set of JWS standards. Chapters 3 through 10 focus on writing code. To really understand the power and ease of use of the new Java Web Services, you need to start writing code. And that is primarily what this book is about. Chapters 3 through 10 are packed with code examples showing you how to best take advantage of the powerful features, avoid some of the pitfalls, and work around some of the limitations.

Chapter 11 looks to the future and offers some ideas, along with a prototype implementation, for a WSDL-centric approach to creating Web Services that might further improve JWS as a platform for Service-Oriented Architecture.

I started writing this book in 2002, when JAX-RPC first appeared on the scene. I soon ran into trouble, though, because I wanted it to be a book for programmers and I had a hard time writing good sample code with JAX-RPC. Four years later, when I started playing around with beta versions of the GlassFish Java EE 5 application server, I noticed that things had significantly improved. It was now fun to program Web Services in Java and I recommitted myself to finishing this book.

The result is a book with lots of code showing you how to deal with SOAP, WSDL, and REST from inside the Java programming language. Hopefully this code, and the writing that goes with it, will help you master Java Web Services and enable you to start using Java as a powerful platform for SOA.

About This Book

An Unbiased Guide to Java Web Services for SOA

My primary goal in this book is to offer an unbiased guide to using the Java Web Services (JWS) standards for SOA. Of course, any author has a bias, and I admit to believing that the JWS standards are quite good. Otherwise, I would not have written this book.

Having admitted my bias, I also freely admit that JWS has weaknesses, particularly when it comes to the development approach known as Start from WSDL and Java. As you will see described in many different ways in this book, the JWS standards present a Java-centric approach to Web Services. That approach can be troublesome when you need to work with established SOA standards and map your Java application to existing XML Schema documents and WSDLs.

In such situations, it’s helpful to be able to take a WSDL-centric approach to Web Services development. In this area, JWS is less strong. Throughout the book, I point out those shortcomings, and offer strategies you can use to overcome them. Chapter 11 even offers a prototype framework, called SOA-J, that illustrates an alternative, WSDL-centric approach to Java Web Services.

Written for Java Developers and Architects

This is a book for people who are interested in code—primarily the developers who write systems and the architects who design them. There are a lot of coding examples you can download, install, and run.

Being a book for Java programmers working with Web Services, the discussion and examples provided within assume you have a working knowledge of Java and a basic understanding of XML and XML Schema. You don’t need to know a lot about SOAP or WSDL to dive in and start learning. However, as you go along in the book, you might want to browse through an introductory tutorial on WSDL and/or XML Schema if you need to firm up your grasp on some of the Web Services basics. Throughout the book, I offer references to Web sites and other books where you can brush up on background material.

Knowledge of J2SE 5.0 Is Assumed

This book assumes you have a basic understanding of J2SE 5.0—particularly the Java language extensions generics and annotations. If you are not familiar with generics or annotations, you can learn all you need to know from the free documentation and tutorials available at http://java.sun.com.

Don’t be intimidated by these topics. Generics and annotations are not hard to master—and you need to understand them if you are going to do Web Services with Java EE 5 and Java SE 6. The reason I have not written an introduction to generics and annotations as part of this book is that there is so much good, free information available on the Web. My focus in this book is to go beyond what is freely available in the online tutorials and documentation.

Why GlassFish?

All the code examples presented in this book have been developed and tested using the GlassFish GLASSFISH open source Java EE 5 reference implementation. At the time I wrote this, it was the only implementation available. Now that the book is going to press, there are more, and the code should run on all these platforms without change. The only changes that will need to be made have to do with the build process where GlassFish specific tools (e.g., the wsimport WSDL to Java compiler, the asadmin deployment utility) are used.

I plan to test the example code on other platforms as they become available and to post instructions for running them on JBoss, BEA, IBM, and so on, as these vendors support the JWS standards. Check the book’s forthcoming Web site (http://soabook.com) for updates on progress with other platforms.

If you haven’t tried GlassFish, I suggest you check it out at https://glassfish.dev.java.net. It supports the cutting edge in Java EE and the community is terrific. In particular, I’ve had good experiences getting technical support on the mailing lists. It’s not uncommon to post a question there and have one of the JSR specification leads respond with an answer within minutes!

Why Some Topics Aren’t Covered

Both SOA and Web Services are vast topics. Even when restricting the discussion to Java technology, it is impossible to cover everything in one book. Faced with that reality, I decided to focus on what I consider to be the core issues that are important to Java developers and architects. The core issues involve creating, deploying, and invoking Web Services in a manner that enables them to be composed into loosely coupled SOA applications.

In narrowing the book’s focus, it is inevitable that I will have disappointed some readers because a particular topic of interest to them isn’t covered. Some of these topics, pointed out by my reviewers, are listed here, along with the reasons why I didn’t include them.

SOA Design Principles

This is not a book that covers the concepts and design philosophy behind SOA. It is a how-to book that teaches Java developers to code SOA components using Java Web Services. For a thorough introduction to SOA concepts and design, I recommend Thomas Erl’s Service-Oriented Architecture Erl.

UDDI

UDDI is very important. And Java EE 5 includes the JAX-R standard interface to UDDI repositories. But JAX-R hasn’t changed since J2EE 1.4. And it is covered well in many other books and online tutorials. So, in an effort to keep this book to a manageable size, I have left it out.

Enterprise Messaging

I wish I could have included a chapter on Enterprise Messaging. After all, it is a cornerstone of SOA. However, this book restricts itself to the capabilities provided by JWS. JWS does not support WS-Reliable Messaging WS-RM or any other SOAP/WSDL-oriented reliable messaging mechanism. Of course, Java EE 5 includes support for the Java Message Service API (JMS). And JMS is a useful tool for implementing SOA applications. But by itself, JMS isn’t a Web Services tool. So, in the interest of focus, I have left it out.

WS-Addressing, WS-Security, and the Many Other WS-* Standards

Explaining the myriad standards for the Web Services stack would require many thousands of pages. Since these WS-* standards are not yet part of JWS, I have not covered them. In addition, my sense is that most Java developers are still mastering SOAP over HTTP. The need for a programmer’s guide to WS-* is probably several years away.

Fonts and Special Characters

Courier font is used for Java types, XML Schema components, and all code examples included in the text. Courier font is also used to signify software-environment-specific items (e.g., paths, directories, environment variables) and text interactions with the computer.

Italics indicate that a term is defined in the glossary. I don’t always use italics—only when a term may not have been used before and I think the reader might want to know it is defined in the Glossary. Italics are also used for emphasis.

< > indicates an environment-specific directory location.

Code Fragments in Text

The text contains lots of code fragments to illustrate the discussion. At the bottom of each code fragment is the file path showing where it came from. Moreover, there are line numbers to show you the line number in the file where the code comes from.

Read More Show Less

Customer Reviews

Average Rating 4.5
( 2 )
Rating Distribution

5 Star

(1)

4 Star

(1)

3 Star

(0)

2 Star

(0)

1 Star

(0)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing all of 2 Customer Reviews
  • Anonymous

    Posted October 1, 2009

    The book is very helpful!

    The examples are very practical.

    Was this review helpful? Yes  No   Report this review
  • Anonymous

    Posted May 28, 2007

    still a lot of coding

    Hansen offers the serious and experienced java programmer a way to learn Java Web Services, based on Java EE 5, which is probably the most heavily used version right now. (Version 6 has just come out and the book's code should easily run under it.) The bulk of the text essentially works through very detailed examples using JWS and associated (recent) standards like JAXB 2. The gist is to be able to write java code that can take XML output from some Web Service out there on the net, and let you composite it into another Web Service. It's still not trivial to do. The code fragments assume a working knowledge of several current standards. Hansen is correct when he says that this is much easier than it would have been just a few years ago. The recent upgrades to java and the standards make this possible. But keep in mind that easier does not necessarily mean simple. One passage in the text might appeal to those hapless enough to have dealt with XSLT. Several years ago, XSLT was promoted as the method to transform one XML representation to another. Several books have been written about this topic. But (bitter) experience has shown that XSLT is a remarkably cumbersome and obtuse way of doing things. What Hansen demonstrates is that JAXB 2 can be used in place of XSLT. Seems much more straightforward. Though to be fair, more practise will be needed doing this, to see if it holds true for other XML transformations.

    Was this review helpful? Yes  No   Report this review
Sort by: Showing all of 2 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)