355 C H A P T E R 1 5 Working with web services 15.1 What are web services and what is SOAP? 356 15.2 Creating a SOAP client application with Ant 357 15.3 Creating a SOAP service with Axis and Ant 363 15.4 Adding web services to an existing web application 367 15.5 Writing a client for our SOAP service 371 15.6 What is interoperability, and why is it a problem? 376 15.7 Building a C# client 376 15.8 The rigorous way to build a web service 381 15.9 Reviewing web service development 382 15.10 Calling Ant via SOAP 383 15.11 Summary 384 Web services are an emerging target of software development. Put simply, a web ser- vice is a web or enterprise application that provides a way for other programs to call it by using XML as the means of exchanging data. If you can build and deploy a web application, you can build and deploy a web service. If its all so easy, why do we have a whole chapter on web services? Because they add new problems to the process: integration and interoperability. Client applications need to be able to call your web service, including applications that are written in dif- ferent languages or that use different web service toolkits. We need to extend our exist- ing development process to integrate client-side and interoperability tests. In this chapter, we extend the web application we wrote in chapter 12, adding a SOAP interface to it. We use the Apache Axis library to provide our SOAP interface, rather than the Sun version, because it comes from a sister project to Ant and because we like it. After adding SOAP to our application, we build tests for it, first with a Java client, and then with a C# client running on the .NET platform. As we said, integra- tion and interoperability are the new challenges of a web service development process.