Newsletter sign-up
View all newsletters

Sign up for our Enterprise Java Newsletter

Enterprise Java

Build an SOA application from exisiting services

Put heterogeneous services together with the Petals ESB

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone

Due to global networks, heterogeneous information systems, and the need for agility, conventional architectures have evolved. The tasks of building entirely new applications, making specific adaptors for legacy systems, or rewriting existing applications are now obsolete. Largely promoted by Web services connectivity, the service-oriented architecture (SOA) is now considered the preferred approach to designing an information system.

SOA proposes to provide existing functions of an information system as "services" that can be accessed in a loosely coupled way, independently from the technical platform. An application is seen as an orchestration of requests for those services. That is why an SOA generally comes with workflow or orchestration concepts.

An enterprise service bus (ESB) is an implementation of an SOA. It is middleware for connecting heterogeneous services and orchestrating them. Related to these concepts, the Java Business Integration specification (JBI, Java Specification Request 208) defines a standard framework for integration.

In this article, I use the Petals ESB, an open source JBI container, to illustrate how to connect existing heterogeneous services and put together an online travel agency Web application.

Java Business Integration

The Java Business Integration specification defines a standard means for assembling integration components. The goal is to create integration solutions that enable an SOA in an enterprise information system. These components are plugged into a JBI environment and can provide or consume services through it in a loosely coupled way. The JBI environment then routes the exchanges between those components.

Two kinds of components can be plugged into a JBI environment:

  • Service engines provide logic in the environment, such as XSL (Extensible Stylesheet Language) transformations or BPEL orchestration (Business Process Execution Language).
  • Binding components are "connectors" to external services or applications. They allow communication with various protocols, such as SOAP, Java Message Service (JMS), remote method invocation (RMI), or ebXML.

These configurable components enable communication between heterogeneous services. The JBI specification introduces the service assembly, which defines the configuration of these components and the links between them. The goal of the components (bindings or engines) is to expose external and internal services. Each service exposed in the JBI environment can be accessed through the service endpoint, the address of the service.

The messages exchanged between components are called message exchanges. The exchange pattern between the components is a send-accept message pattern.

An online travel agency application with JBI

This article's travel agency Website allows users to book flights and accommodations, and sends an email to users to confirm these reservations. To deliver this functionality, the Website sends to the workflow engine all the information provided by the user in XML. This workflow engine then connects to the airline to book the flight, then to the hotel chain to book the room. It sends a confirmation email to the user via the mail engine.

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Comments (2)
Login
Forgot your account info?

..By Anonymous on October 22, 2009, 8:26 amA really well presented tutorial. thanks

Reply | Read entire comment

OrchestrationBy Anonymous on September 25, 2009, 8:55 amThrough this site did I understand orchestration. But is it java programming language with XML are the languages used in orchestrating requests? Thank you so much....

Reply | Read entire comment

View all comments

Add comment
Anonymous comments subject to approval. Register here for member benefits.
Have a JavaWorld account? Log in here. Register now for a free account.
Resources