Service Oriented Architecture with Apache Axis
My 10-year passport expired recently and I had to use one of those new-fangled passport photo machines! This presented an opportunity to see how digital photographic technology has advanced what was once a pretty mundane area. It turns out that the new photo machines are very user-friendly; they incorporate speech synthesis (but not recognition) and the ability to choose your favorite photo. So, there’s really almost no chance of getting four dud photos of yourself with your eyes closed! And if you still don’t like the end result, you can send the photos to a return address for a full refund. Not too shabby—an overall excellent service and a textbook example of how technology can provide good value for money.
It’s All About Service Now
The photo machine in this case provides a service with a known end result (four photos!). In this context, a user pays for and consumes the service, walking away with what is hopefully a satisfactory product. The service-oriented model is all the rage now, as illustrated in Figure 1.
Figure 1 Service-oriented IT
The left section of Figure 1 shows an IT infrastructure that implements a service-oriented architecture (SOA). This infrastructure offers a range of services to the functional and human users on the right. The exported services can be consumed immediately (for example, an end user automatically downloads a batch of operating system updates) or they can be combined to form other services. How does this mode of use differ from traditional IT infrastructure?
Figure 2 illustrates the traditional IT approach that still exists in most organizations. Instead of having services exported from the IT infrastructure, the approach in Figure 2 illustrates a far more complex proposition. Each service consumer on the right side of Figure 2 must dip into the IT infrastructure and programmatically or manually access any required resources (databases, networks, applications, and so on). These resources must than be combined into the requisite service instance. So, the major difference between Figure 1 and 2 is what you might call a service layer.
Figure 2 Complex business elements in a traditional IT infrastructure
Instead of using IT infrastructure merely for low-level operations (such as running applications, database administration, network login, and so on), the trend is increasingly moving toward using flexible centralized services. The exported services instead of the hardware and software of Figure 1 present the point of contact for end users. Service orientation is a different abstraction from that of direct hardware/software access.
So, how do you go about building such an infrastructure? Web services provide a powerful model for service orientation. In particular, Apache Axis allows for arbitrarily complex services to be created and deployed on an application server.