SOAP Programming with Java

The SOAP Book Now Available!

Soap Programming with Java, published by Sybex, is now on bookstore shelves. SOAP (Simple Object Access Protocol) is a pretty timely topic since all the big players in the web services game seem to be making heavy use of SOAP. In this book I have used the Apache SOAP 2.2 release but I have tried to stay as general as possible since I am sure that other Java implementations will eventualy replace it. For example, the Apache Axis project is now in beta release.

Isn't that a cool cover! Click here to see a larger version of it. Good choice by Sybex art department - I have always liked Zen gardens.

Paperback - 448 pages 1st edition (January 18, 2002) Sybex; ISBN: 0782129285. See the main Sybex website. Also, did you know that Sybex has a new site devoted to certifications? Cool!

NEW! Chapter 8 in PDF form is now available - see Chapter 8 in the outline below.


Chapter 1: Understanding XML Messaging

This chapter starts by describing the general importance of messaging mechanisms in the network-connected world of distributed computing. After a review of various communication architectures, I look at the early history of messaging developments leading up to SOAP. This discussion includes short descriptions of the DOM and SAX approaches to  parsing XML documents. Finally I discuss the significant players, including corporations, standards groups, and industry associations.

Chapter 2: A Survey of SOAP

With the background of XML based messaging in Java established, I move on to the current state of the SOAP standard. Since final standards for SOAP are likely to be defined by the XML Protocol working group of the W3C, I emphasize the approach this group is taking.

Chapter 3: Example SOAP Applications

In order to get the reader started with some real Java code, this chapter will cover setting up the Apache SOAP project examples with the Tomcat server. I emphasize the Apache SOAP project as the most highly advanced open source software. The 2.2 version is well developed and stable enough to work with. The server software is the open source Tomcat server, also from the Apache organization. The Tomcat 4.0 revision implements the latest Sun revisions of the servlet and JSP APIs.

Chapter 4: The Significance of WSDL and UDDI

WSDL (Web Services Description Language) is increasing in significance in the world of web services, especially the world of SOAP. The idea is that an enterprise that wants to make a web service available will publish the WSDL description of that service. In theory, automatic utilities will be able to use the WSDL to write the necessary code to access that service. This automatic code generation from WSDL is already a big part of Microsoft's SOAP "high level" interfaces for C# and VB.

The UDDI (Universal Description, Discovery and Integration) standard is intended to permit a sort of “Yellow Pages” lookup service by which an enterprise can advertise the availability of a particular service. In theory, UDDI, WSDL and SOAP provide the layers of a system by which a web service can advertise its existence, describe its services, and provide those services to clients.

Chapter 5: How SOAP Encodes Data

In this chapter I discuss the various ways that SOAP provides for encoding of data. The primary encoding scheme depends on XML Schema so I will provide several examples covering all of the schema data types. Custom encoding approaches will also be covered.

Chapter 6 Creating a SOAP Server Application

In this chapter I create a fairly complex SOAP application using a HTTP server. Both standard and custom encoding will be used. This server will eventually go up on the LANWrights Web server, as a live demonstration, for which complete code appears in this book. (Still working on getting this on-line.)

Chapter 7: SOAP Client Architecture with HTTP

The client to match the application will be developed in this chapter. This is a good place to cover debugging and troubleshooting techniques. The debugging utility developed in the servlets book has been extended here.

Chapter 8: SOAP Architecture Using Messages

It is important to stress that SOAP is quite flexible as to transport mechanisms, which is what makes it such an attractive technology. Having covered HTTP based architecture in the previous chapters, I now review the Java specific message transport mechanisms Java Message Services and JavaSpaces, with extensive example code for each mechanism covered.

Sybex has generously agreed to make this chapter available for viewing as a 1.5m PDF file. The code listings and auxilliary files in a zip file are here.

Chapter 9 SOAP over E-mail

I don't use the Apache SOAP 2.2 examples for this chapter because they don't use the JavaMail standard API. In this chapter I work up both client and server examples using the latest JavaMail version. Much of the chapter is concerned with introducing the API and adapting it for SOAP.

Chapter 10 SOAP and .NET

Microsoft’s .NET (dotNET) initiative promises to completely reorganize that company’s product line with an emphasis on communications between networked components. Central to this new vision is support of data in the XML standard and SOAP standard as defined by the W3C. I also discuss Microsoft's proposed extensions to the SOAP standard.

Chapter 11 SOAP and Database Access

Java provides standard JDBC (Java Database Connectivity) classes to allow Java programs to connect to practically any database. However, there are major concerns about SOAP’s ability to encode the data structures required to represent all data types of interest. In this chapter, I review some of the important factors a SOAP service designer must take into consideration when dealing with the JDBC API.

Chapter 12 SOAP Goes Wireless

Sun has created various versions of Java for small devices such as cellular phones, Palm Pilots, and web pads. If you follow the industry news, you know that Java has become the environment of choice for many wireless device manufacturers. Since these versions of Java may not be familiar to programmers used to desktop systems, I discuss how the limitations of small devices and  wireless protocols at various scales influences the roles that SOAP can play in the rapidly changing field of wireless communications.

To develop for small devices, you need a special environment and Java libraries. I use Sun's latest J2ME Wireless toolkit to illustrate creating a SOAP application and running it on both a cellular phone emulator and Palm Pilot emulator. The example comes from the Enhydra open-source SOAP and XML packages for J2ME. (Cool stuff!)

Hey, this article on wireless SOAP just appeared in JavaWorld magazine.

Chapter 13 Situating SOAP in the Computing Landscape

In this chapter I survey the roles that SOAP is currently playing in real applications, then speculate on roles that SOAP might play tomorrow. I also look at other developments that might replace or supplement SOAP.

Appendix A: SOAP Resources

This appendix provides pointers to SOAP-related standards documents, articles, code, and information.

Appendix B: SOAP Servers Online

This appendix looks at three of the current crop of SOAP services chosen to represent the potential range of SOAP based web services.

Appendix C: Debugging SOAP with UtilSnoop

This appendix provides detailed instructions on how to use the utility I created to assist with debugging SOAP messages using HTTP. It also gives the source code with comments.

Appendix D: SOAP Specification

This appendix has the entire text of the latest SOAP 1.2 specifications, in the middle of modifications and refinements by the W3C XML Protocol Working Group. I would have preferred something final but they are still fiddling with it.


I always try to include a complete glossary - there is nothing more frustrating than running across a term you don't recognize in the middle of a technical discussion. Over 400 terms are included in this one.

More SOAP Resources

Here is my working list of important SOAP and XML messaging related sites.

UtilSnoop Debugging Utility

FREE! UtilSnoop for intercepting the complete text of the interaction between your SOAP client and server. Also provides for sending straight requests to a service and recording results to file.

Download UtilSnoop - source and binary - 100%Java, small download.

Local Links of Interest to Java Programmers
Java Servlets and JSP Java, XML, and eCommerce Java Messaging and SOAP Web publishing with Cocoon

Email to Bill Brogden.

Layout, design & revisions © 1997-2002LANWrights, Inc.
Revised -- Aug. 25, 2002 [WBB]