Web services can be characterized by three properties. First, web services are accessed over the Web through standard Internet protocols, such as HTTP or HTTPS. Second, web services describe themselves using XML and typically rely on registries to aid the lookup and invocation of the services. Finally, web services talk to their clients (and other web services) using an XML-based protocol i.e., remote procedure calls to a web service operation are transmitted in the form of XML messages.
The combination of these properties is quite powerful distributed applications that span heterogeneous hardware and software platforms can now interoperate using a cross-platform language (XML) over standard Internet protocols. Web services provide an environment for building loosely coupled, decentralized applications where the diverse services can collaborate in a platform-independent and language-agnostic way. Application interoperability is the primary motivation for adopting web services. Given an environment in which a number of applications written in different programming languages running on diverse platforms need to communicate with each other, web services can help bridge language barriers and overcome these platform differences. As long as the participating applications adhere to the published standards that determine the formats of the XML messages, processing rules, and more, it is possible to expose the different application services in the form of web services, all of which can be accessed by peer applications using a standard XML-based protocol.
There is a plethora of standards in the world of web services. WebLogic supports the following standards:
SOAP 1.1 with Attachments
Simple Object Access Protocol (SOAP) is a lightweight, XML-based communications protocol for exchanging messages. WebLogic Server comes equipped with its own implementation of the SOAP 1.1 and "SOAP with Attachments" specifications. In fact, WebLogic web services accept both SOAP 1.1- and SOAP 1.2-compliant message requests, but produce only SOAP 1.1-compliant message responses. In addition, WebLogic supports the various XML Schema datatypes used to describe the format for data that is being exchanged. WebLogic 8.1 also can be configured to use SOAP 1.2. As this is not a W3C recommendation at the time of writing, this implementation is subject to change.
The Web Services Description Language (WSDL) is the XML application that is used to describe a web service. A WSDL document describes the various operations exposed by a web service, their input and output parameters, and how to access the web service. WebLogic supports WSDL 1.1-compliant descriptions for web services.
Sun Microsystems has developed the Java API for XML-based RPC (JAX-RPC) standard, which defines the client API needed for invoking a web service. WebLogic supplies a client JAR that includes an implementation of the JAX-RPC 1.0 specification, thereby allowing Java clients to access both WebLogic and other non-WebLogic web services. The JAX-RPC standard is central to understanding WebLogic's web services framework.
The Universal Description, Discovery and Integration (UDDI) specification defines a standard way to describe a web service, publish web services over a registry, and discover other registered web services. WebLogic supports the UDDI 2.0 standard for publishing web services over a registry and for inquiring about other registered web services.
In this chapter, we focus on how to build and deploy web services to WebLogic, which supports the implementation of a web service using ordinary Java classes and standard J2EE components such as EJBs and JMS. We also examine how to create clients for these web services. These clients can talk to other standards-compliant web services, not just those deployed to WebLogic Server. We also look at how to secure access to your web services and how to invoke web services that use SSL.
Web services are not part of the J2EE 1.3 standard. WebLogic implements many specifications that probably will form the heart of J2EE 1.4 support for web services. You can expect much of the material in this chapter to become standard in future releases. This chapter exposes the core web service material. Much of this is at the developer level. Some application builders and architects may prefer a higher-level approach to building web services, which is supported by WebLogic Workshop.
Managing the Web Server
Using JNDI and RMI
Using CMP and EJB QL
Packaging and Deployment
Performance, Monitoring, and Tuning
Logging and Internationalization