SOA.WRK.

Tuesday Feb 20, 2007

Composite Application - Part 1

In Netbeans Enterprise Pack 5.5 released last year, we introduced a new project system, called Composite Application Project, for building SOA applications targeting the Open ESB runtime based on JSR 208, the Java Business Integration (JBI), specification. Early this year, when InfoWorld selected Netbeans 5.5 for the Java IDE Innovator of the 2007 Technology of the Year Awards, a composite application project was shown in the middle of the screenshot for the award.

Infoworld

This is an honor for us involved in building this project system. Although the code has been released in open source for almost a year, we did not have much time to write to explain its design to our users. I hope this series of short blogs will provide some information to those interested in learning more about the composite application project system.

1.Composing.Aspects

To explain what a composite application is, we need to re-examine the traditional application model. A monolithic business application may be decomposed into distinct parts according to its functionality. For example, a service application may be broken into following functional parts:

  • a core business logic component;
  • a messaging component handling external communication functions; and
  • a set of XML transformation utilities.
Other common functional parts include logging, persistence, and security. These functional parts are referred to as "aspects " because they often cross-cut the core business logic.

As alternatives to the traditional method of application development, many techniques and methodologies have been proposed to show how to weave aspects into an application. We discovered that messages are a good composition tool. By using messages as threads, aspects can be stitched together into an application. We call such an application a "Composite Application".

test image

We were inspired by earlier work of others. In late 70s and early 80s, researchers found that better systems could be build by distributing functions such as database, logging, and others into separate servers, creating "Distributed Systems".

2.JBI.Logical.Services

In 2004, we studied early versions of the JBI spec. JBI is a very nice SOA/BI spec with a Java implementation. It proposed a WSDL/XML standard based SOA/BI application platform with detailed design including:

  • a component container spec for plugging in component containers;
  • a message exchange spec for defining component interactions; and
  • management and other specs.
A component in JBI is a logical service defined by one or more WSDLs. It interacts with components in other containers via operations/messages specified in WSDLs. JBI defined a normalized messaging system to route messages between containers. That eliminated the need for specifying concrete elements in the service WSDL.

In our design, aspects of composite application are mapped to JBI components. Messages are mapped to WSDL messages associated with operations of a port type. So, in JBI, a composite application is implemented as a collection of interacting JBI logical services defined by a set of WSDLs.

test image

The official JBI term used for component and composite application are:

  • Service Unit - a component of a container type;
  • Service Assembly - a composite application of components.
There are two types of component containers defined by JBI: Service Engine (SE) and Binding Component (BC).

...more later...

Comments:

Hi,

This really interesting. especially using Aspect include security within composite web services. Was wondering if u may have any simple example of building a simple aspect project to do some advise .. on a bpel project
thanks
jack

Posted by Jack on September 04, 2008 at 06:08 PM PDT #

Post a Comment:
  • HTML Syntax: NOT allowed

Calendar

Feeds

Search

Links

Navigation

Referrers