<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JavaBeat &#187; SOA</title>
	<atom:link href="http://www.javabeat.net/category/xml-web-services/soa/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.javabeat.net</link>
	<description>Java Technology News</description>
	<lastBuildDate>Wed, 22 May 2013 01:42:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Service-Oriented Architecture— An Integration Blueprint</title>
		<link>http://www.javabeat.net/2010/10/service-oriented-architecture-an-integration-blueprint/</link>
		<comments>http://www.javabeat.net/2010/10/service-oriented-architecture-an-integration-blueprint/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 00:30:42 +0000</pubDate>
		<dc:creator>krishnas</dc:creator>
				<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.javabeat.net/?p=1653</guid>
		<description><![CDATA[<p>Connect to us ( <a href="https://twitter.com/javabeat">@twitter</a> | <a href="https://www.facebook.com/javabeat.net">@facebook )</p><p>Service-Oriented Architecture— An Integration Blueprint With the widespread use of service-oriented architecture (SOA), the integration of different IT systems has gained a new relevance. The era of isolated business information systems—so-called silos or stove-pipe architectures—is finally over. It is increasingly rare to find applications developed for a specific purpose that do not need to exchange [...]</p>]]></description>
				<content:encoded><![CDATA[<p>Connect to us ( <a href="https://twitter.com/javabeat">@twitter</a> | <a href="https://www.facebook.com/javabeat.net">@facebook )</p><div class="wpInsert wpInsertInPostAd wpInsertLeft" style="float: left; margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* Article-Rect */
google_ad_slot = "9976259118";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><a id="dd_start"></a><p><H1><CENTER>Service-Oriented Architecture— An Integration Blueprint</CENTER></H1><br />
<P>With the widespread use of service-oriented architecture (SOA), the integration of<br />
different IT systems has gained a new relevance. The era of isolated business information<br />
systems—so-called silos or stove-pipe architectures—is finally over. It is increasingly<br />
rare to find applications developed for a specific purpose that do not need to exchange<br />
information with other systems. Furthermore, SOA is becoming more and more widely<br />
accepted as a standard architecture. Nearly all organizations and vendors are designing or<br />
implementing applications with SOA capability. SOA represents an end-to-end approach<br />
to the IT system landscape as the support function for business processes. Because of<br />
SOA, functions provided by individual systems are now available in a single standardized<br />
form throughout organizations, and even outside their corporate boundaries. In addition,<br />
SOA is finally offering mechanisms that put the focus on existing systems, and make it<br />
possible to continue to use them. Smart integration mechanisms are needed to allow<br />
existing systems, as well as the functionality provided by individual applications, to be<br />
brought together into a new fully functioning whole. For this reason, it is essential to<br />
transform the abstract concept of integration into concrete, clearly structured, and<br />
practical implementation variants.</P><br />
<P>The Trivadis Integration Architecture Blueprint indicates how integration architectures<br />
can be implemented in practice. It achieves this by representing common integration<br />
approaches, such as Enterprise Application Integration (EAI); Extract, Transform, and<br />
Load (ETL); event-driven architecture (EDA); and others, in a clearly and simply<br />
structured blueprint. It creates transparency in the confused world of product developers<br />
and theoretical concepts.</P><br />
<P>The Trivadis Integration Architecture Blueprint shows how to structure, describe, and<br />
understand existing application landscapes from the perspective of integration. The<br />
process of developing new systems is significantly simplified by dividing the integration<br />
architecture into process, mediation, collection and distribution, and communication<br />
layers. The blueprint makes it possible to implement application systems correctly<br />
without losing sight of the bigger picture: a high performance, flexible, scalable, and<br />
affordable enterprise architecture.</P><br />
<H1>What This Book Covers</H1><br />
<P>Despite the wide variety of useful and comprehensive books and other publications on<br />
the subject of integration, the approaches that they describe often lack practical relevance.<br />
The basic issue involves, on the one hand, deciding how to divide an integration solution<br />
into individual areas so that it meets the customer requirements, and on the other hand,<br />
how it can be implemented with a reasonable amount of effort. In this case, this means<br />
structuring it in such a way that standardized, tried-and-tested basic components can be<br />
combined to form a functioning whole, with the help of tools and products. For this<br />
reason, the Trivadis Integration Architecture Blueprint subdivides the integration layer<br />
into further layers. This kind of layering is not common in technical literature, but it has<br />
been proven to be very useful in practice. It allows any type of integration problem to be<br />
represented, including traditional ETL (Extract, Transform, and Load), classic EAI<br />
(Enterprise Application Integration), EDA (event-driven architecture), and grid<br />
computing. This idea is reflected in the structure of the book.</P><br />
<P><I>Chapter 1, Basic Principles</I>, covers the fundamental integration concepts. This chapter is<br />
intended as an introduction for specialists who have not yet dealt with the subject of<br />
integration.</P><br />
<P><I>Chapter 2, Base Technologies</I>, describes a selection of base technologies. By far the most<br />
important of these are transaction strategies and their implementation, as well as process<br />
modeling. In addition, Java EE Connector Architecture (JCA), Java Business Integration<br />
(JBI), Service Component Architecture (SCA), and Service Data Objects (SDO) are<br />
explained. Many other base technologies are used in real-life integration projects, but<br />
these go beyond the scope of this book.</P><br />
<P><I>Chapter 3, Integration Architecture Blueprint</I>, describes the Trivadis Integration<br />
Architecture Blueprint. The process of layering integration solutions is fully<br />
substantiated, and each step is explained on the basis of the division of work between the<br />
individual layers. After this, each of the layers and their components are described.</P><br />
<P><I>Chapter 4, Implementation Scenarios</I>, demonstrates how the Trivadis Integration<br />
Architecture Blueprint represents the fundamental integration concepts that have been<br />
described in Chapter 1. We will use the blueprint with its notation and visualization to<br />
understand some common integration scenarios in a mostly product-neutral form. We<br />
will cover traditional, as well as modern, SOA-driven integration solutions.</P><br />
<P><I>Chapter 5, Vendor Products for Implementing the Trivadis Blueprint</I>, completes the book<br />
with a mapping of some vendor platforms to the Trivadis Integration Architecture<br />
Blueprint.</P><br />
<H1><CENTER>Integration Architecture Blueprint</CENTER></H1><br />
<P>The <B>Trivadis Integration Architecture Blueprint</B> specifies the building blocks needed<br />
for the effective implementation of integration solutions. It ensures consistent quality in<br />
the implementation of integration strategies as a result of a simple, tried-and-tested<br />
structure, and the use of familiar integration patterns (Hohpe, Wolf 2004).</P><br />
<H1>Standards, components, and patterns used</H1><br />
<P>The Trivadis Integration Architecture Blueprint uses common standardized techniques,<br />
components, and patterns, and is based on the layered architecture principle.</P><br />
<P>A <B>layered architecture</B> divides the overall architecture into different <B>layers</B> with<br />
different responsibilities. Depending on the size of the system and the problem involved,<br />
each layer can be broken down into further layers. Layers represent a logical construct,<br />
and can be distributed across one or more physical tiers. In contrast to <B>levels</B>, layers are<br />
organized hierarchically, and different layers can be located on the same level. Within the<br />
individual layers, the building blocks can be strongly cohesive. Extensive decoupling is<br />
needed between the layers. The rule is that higher-level layers can only be dependent on<br />
the layers beneath them and not vice versa. Each <B>building block</B> in a layer is only<br />
dependent on building blocks in the same layer, or the layers beneath. It is essential to<br />
create a layer structure that isolates the most important cohesive design aspects from one<br />
another, so that the building blocks within the layers are decoupled.</P><br />
<P>The blueprint is process oriented, and its notation and structure are determined by the<br />
blueprint&#8217;s dependencies and information flow in the integration process. An explanation<br />
of how the individual layers, their building blocks, and tasks can be identified from the<br />
requirements of the information flow is given on the basis of a simple scenario. In this<br />
scenario, the information is transported from one source to another target system using an<br />
integration solution.</P><br />
<P>In the blueprint, the building blocks and scenarios are described using familiar design<br />
patterns from different sources:</P><br />
<UL><br />
<LI>(Hohpe, Wolf 2004)</LI><br />
<LI>(Adams et al. 2001)</LI><br />
<LI>(Coral8 2007)</LI><br />
<LI>(Russel et al. 2006)</LI><br />
</UL><br />
<P>These patterns are used in a shared context on different layers. The Trivadis Integration<br />
Architecture Blueprint includes only the integration-related parts of the overall<br />
architecture, and describes the specific view of the <B>technical integration domain</B> in an<br />
overall architecture. It focuses on the information flow between systems in the context of<br />
domain-driven design.</P><br />
<B>Domain-driven design</B> is a means of communication, which is based on a profound<br />
understanding of the relevant business domain. This is subsequently modeled specifically<br />
for the application in question. Domain models contain no technical considerations and<br />
are restricted exclusively to business aspects. Domain models represent an abstraction of<br />
a business domain, which aims to capture the exemplary aspects of a specific<br />
implementation for this domain. The objectives are:</P><br />
<UL><br />
<LI>To significantly simplify communication between domain experts and<br />
developers by using a common language (the domain model)</LI><br />
<LI>To enable the requirements placed on the software to be defined more<br />
accurately and in a more targeted way</LI><br />
<LI>It must be possible to describe, specify, and document the software more<br />
precisely and more comprehensibly, using a clearly defined language, which<br />
will make it easier to maintain</LI><br />
</UL><br />
<P>The technical aspects of architecture can be grouped into domains in order to create<br />
specific views of the overall system. These domains cover security, performance, and<br />
other areas. The integration of systems and information also represents a specific view of<br />
the overall system, and can be turned into a domain.</P><br />
<P><B>Integration domain</B> is used to mean different things in different contexts. One widelyused<br />
meaning is &#8220;application domain&#8221;, in other words, a clearly defined, everyday<br />
problem area where computer systems and software are used. Enterprise architectures are<br />
often divided into business and technical domains:</P><br />
<UL><br />
<LI><B>Business domains</B> may include training, resource management, purchasing,<br />
sales or marketing, for example.</LI><br />
<LI><B>Technical domains</B> are generally areas such as applications, integration,<br />
network, security, platforms, systems, data, and information management.</LI><br />
</UL><br />
<P>The blueprint, however, sees integration as a technical domain, which supports business<br />
domains, and has its own views that can be regarded as complementary to the views of<br />
other architecture descriptions.</P><br />
<P>In accordance with Evans (Evans, 2004), the Trivadis Integration Architecture Blueprint<br />
is a <I>ubiquitous language</I> for describing integration systems. This and the structure of the<br />
integration domain on which it is based, have been tried and tested in a variety of<br />
integration projects using different technologies and products. The blueprint has<br />
demonstrated that it offers an easy-to-use method for structuring and documenting<br />
implementation solutions. As domain models for integration can be formulated<br />
differently depending on the target platform (for example, an object-oriented system or a<br />
classic ETL solution), the domain model is not described in terms of object orientation.<br />
Instead, the necessary functionality takes the form of building blocks (which are often<br />
identical with familiar design patterns) on a higher level of abstraction. This makes it<br />
possible to use the blueprint in a heterogeneous development environment with profitable<br />
results.</P><br />
<P>An <B>architecture blueprint</B> is based on widely-used, tried-and-tested techniques,<br />
components and patterns, which are grouped into a suitable structure to meet the<br />
requirements of the target domain.</P><br />
<P>The concepts, the functionality, and the building blocks to be implemented are described<br />
in an abstract form in blueprints. These are then replaced or fine-tuned by productspecific<br />
building blocks in the implementation project. Therefore, the Trivadis Integration<br />
Architecture Blueprint has been deliberately designed to be independent of individual<br />
vendors, products, and technologies. It includes integration scenarios and proposals that<br />
apply to specific problems, and can be used as aids during the project implementation<br />
process. The standardized view of the integration domain and the standardized means of<br />
representation enable strategies, concepts, solutions, and products to be compared with<br />
one another more easily in evaluations of architectures.</P><br />
<P>The specifications of the blueprint act as guidelines. Differences between this model and<br />
reality may well occur when the blueprint is implemented in a specific project. Individual<br />
building blocks and the relationships between them may not be needed, or may be<br />
grouped together. For example, the <B>adapter</B> and <B>mapper</B> building blocks may be joined<br />
together to form one component in implementation processes or products.</P><br />
<H1>Structuring the integration blueprint</H1><br />
<P>The following diagram is an overview of the Trivadis Integration Architecture Blueprint.<br />
It makes a distinction between the <B>application and information view</B> and the<br />
<B>integration view</B>.</P><br />
<P><CENTER><IMG SRC="images/2010/10/Blueprint/1.jpg"/></CENTER></P><br />
<H1>Insertt image 1049EN_03_01.png</H1><br />
<P>The <B>application and information view</B> consists of external systems, which are to be<br />
connected together by an integration solution. These are source or target entities in the<br />
information flow of an integration solution. Generally one physical system can also take<br />
on both roles. The building blocks belonging to the view, and the view itself, must be<br />
regarded as external to the integration system that is being described and, therefore, not<br />
the subject of the integration blueprint. The external systems can be divided into three<br />
main categories:</P><br />
<UL><br />
<LI><B>Transactional information storage:</B> This includes classic relational<br />
database management systems (RDBMS) and messaging systems (queues,<br />
topics). The focus is on <B>data integration</B>.</LI><br />
<LI><B>Non-transactional information storage:</B> This primarily file-based systems<br />
and non-relational data stores (NoSQL) with a focus on <B>data integration</B>.</LI><br />
<LI><B>Applications:</B> Applications include transactional or non-transactional<br />
systems that are being integrated (ERP—Enterprise Resource Planning,<br />
CMS—Content Management System, and so on) and can be accessed<br />
through a standardized API (web service, RMI/IIOP, DCOM, and so on).<br />
The focus is on <B>application</B> and <B>process integration</B>.</LI><br />
</UL><br />
<P>The integration view lies at the heart of the integration blueprint and is divided (on the<br />
basis of the principle of <B>divide and conquer</B>) into the following levels:</P><br />
<UL><br />
<LI><B>Transport level:</B> The transport level encapsulates the technical details of<br />
communication protocols and formats for the external systems. It contains:</LI><br />
	<UL><br />
	<LI><B>Communication layer:</B> The communication layer is part of the<br />
transport level, and is responsible for transporting information.<br />
This layer links the integration solution with external systems,<br />
and represents a type of gateway to the infrastructure at an<br />
architectural level. It consists of transport protocols and formats.</LI><br />
</UL><br />
<LI><B>Integration domain level:</B> The integration domain level covers the classic<br />
areas of integration, including typical elements of the integration domain,<br />
such as adapters, routers, and filters. It is divided into:</LI><br />
	<UL><br />
	<LI><B>Collection/distribution layer:</B> This layer is responsible for<br />
connecting components. It is completely separate from the main<br />
part of the integration domain (mediation). The building blocks<br />
in this layer connect the mediation layer above with the<br />
communication layer below. The layer is responsible for<br />
encapsulating external protocols and their technical details from<br />
the integration application, and transforming external technical<br />
formats into familiar internal technical formats.</LI><br />
<LI><B>Mediation layer:</B> This layer is responsible for forwarding<br />
information. Its main task is to ensure the reliable forwarding of<br />
information to business components in the process layer, or<br />
directly to output channels that are assigned to the<br />
collection/distribution layer, and that distribute data to the target<br />
systems. This is the most important functionality of the<br />
integration domain. In more complex scenarios, the information<br />
forwarding process can be enhanced by information<br />
transformation, filtering, and so on.</LI><br />
</UL><br />
<LI><B>Application level:</B> The application level encapsulates the integration<br />
management and process logic. It is an optional level and contains:</LI><br />
	<UL><br />
	<LI><B>Process layer:</B> The process layer is part of the application level,<br />
and is responsible for orchestrating component and service calls.<br />
It manages the integration processes by controlling the building<br />
blocks in the mediation layer (if they cannot act autonomously).</LI><br />
</UL><br />
</UL><br />
<P>The integration view contains additional functionality that cannot be assigned to any of<br />
the levels and layers referred to above. This functionality consists of so-called<br />
cross-cutting concerns that can be used by building blocks from several other layers.<br />
Cross-cutting concerns include:</P><br />
<UL><br />
<LI><B>Assembly/deployment:</B> Contains configurations (often declarative or<br />
scripted) of the components and services. For example, this is where the<br />
versioning of Open Service Gateway initiative (OSGi) services is specified.</LI><br />
<LI><B>Transaction:</B> Provides the transaction infrastructure used by the building<br />
blocks in the integration domain.</LI><br />
<LI><B>Security/management:</B> This is the security and management infrastructure<br />
used by the building blocks in the integration domain. It includes, for<br />
example, libraries with security functionality, <B>JMX</B> agents and similar<br />
entities.</LI><br />
<LI><B>Monitoring, BAM, QoS:</B> These components are used for monitoring<br />
operations. This includes ensuring compliance with the defined <B>Service<br />
Level Agreements (SLA)</B> and <B>Quality of Service (QoS). Business Activity<br />
Monitoring (BAM)</B> products can be used for monitoring purposes.</LI><br />
<LI><B>Governance:</B> These components and artifacts form the basis for SLAs and<br />
QoS. The artifacts include business regulations, for example. In addition, this<br />
is where responsibilities, functional and non-functional requirements, and<br />
accounting rules for the services/capacities used are defined.</LI><br />
</UL></p><div class="wpInsert wpInsertInPostAd wpInsertMiddle" style="margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* Article-Middle-Med-Rect */
google_ad_slot = "7805667846";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<div class='dd_outer'><div class='dd_inner'><div id='dd_ajax_float'><div class='dd_button_v'><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><fb:like href="http%3A%2F%2Fwww.javabeat.net%2Fcategory%2Fxml-web-services%2Fsoa%2Ffeed%2F" send="false" show_faces="false"  layout="box_count" width="50"  ></fb:like></div><div style='clear:left'></div><div class='dd_button_v'><script type='text/javascript' src='https://apis.google.com/js/plusone.js'></script><g:plusone size='tall' href='http://www.javabeat.net/category/xml-web-services/soa/feed/'></g:plusone></div><div style='clear:left'></div><div class='dd_button_v'><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.javabeat.net/category/xml-web-services/soa/feed/" data-count="vertical" data-text="SOA" data-via="javabeat" ></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style='clear:left'></div><div class='dd_button_extra_v'><script type="text/javascript">jQuery(document).load(function(){ stLight.options({publisher:'bab47279-62c9-46af-addc-79fd1fe8fee0'}); });</script><div class="st_email_custom"><span id='dd_email_text'>email</span></div></div><div style='clear:left'></div><div class='dd_button_extra_v'><div id='dd_print_button'><span id='dd_print_text'><a href='javascript:window:print()'>print</a></span></div></div><div style='clear:left'></div></div></div></div><script type="text/javascript">var dd_offset_from_content = 44; var dd_top_offset_from_content = 0;</script><script type="text/javascript" src="http://www.javabeat.net/wp-content/plugins/digg-digg//js/diggdigg-floating-bar.js?ver=5.3.0"></script><div class="wpInsert wpInsertInPostAd wpInsertBelow" style="margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* JB-Footer-LU 468x15 */
google_ad_slot = "8789107210";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>]]></content:encoded>
			<wfw:commentRss>http://www.javabeat.net/2010/10/service-oriented-architecture-an-integration-blueprint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building SOA-Based Composite Applications Using NetBeans IDE 6</title>
		<link>http://www.javabeat.net/2009/10/building-soa-based-composite-applications-using-netbeans-ide-6/</link>
		<comments>http://www.javabeat.net/2009/10/building-soa-based-composite-applications-using-netbeans-ide-6/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 14:11:59 +0000</pubDate>
		<dc:creator>krishnas</dc:creator>
				<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.javabeat.net/?p=2006</guid>
		<description><![CDATA[<p>Connect to us ( <a href="https://twitter.com/javabeat">@twitter</a> | <a href="https://www.facebook.com/javabeat.net">@facebook )</p><p>Building SOA-Based Composite Applications Using NetBeans IDE 6 Composite applications aid businesses by stitching together various componented business capabilities. In the current enterprise scenario, empowering business users to react quickly to the rapidly changing business environment is the top most priority. With the advent of composite applications the &#8216;reuse&#8217; paradigm has moved from the technical [...]</p>]]></description>
				<content:encoded><![CDATA[<p>Connect to us ( <a href="https://twitter.com/javabeat">@twitter</a> | <a href="https://www.facebook.com/javabeat.net">@facebook )</p><div class="wpInsert wpInsertInPostAd wpInsertLeft" style="float: left; margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* Article-Rect */
google_ad_slot = "9976259118";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><h1><center>Building SOA-Based Composite Applications Using NetBeans IDE 6</center></h1>
<p>Composite applications aid businesses by stitching together various<br />
componented business capabilities. In the current enterprise scenario,<br />
empowering business users to react quickly to the rapidly changing business<br />
environment is the top most priority. With the advent of composite applications<br />
the &#8216;reuse&#8217; paradigm has moved from the technical aspect to the business<br />
aspect. You no longer re-use a service but re-use a business process. Now,<br />
enterprises can define their own behaviors optimized for their businesses through<br />
metadata and flows. This business process composition has become<br />
increasingly important for constructing business logic.</p>
<p>The ability of composite applications to share components between them nullifies<br />
the distinction between actual applications. Business users should be able to<br />
move between the activities they need to do without any actual awareness that<br />
they are moving from one domain to another.</p>
<p>The composite application design enables your company to combine multiple<br />
heterogeneous technologies into a single application, bringing key application<br />
capability within reach of your business user. Enterprises creating richer<br />
composite applications by leveraging existing interoperable components increase<br />
the development organization&#8217;s ability to respond quickly and cost-effectively to<br />
emerging business requirements. While there are many vendors offering various<br />
graphical tools to create composite applications, this book will focus on<br />
OpenESB and NetBeans IDE for designing and building composite applications.</p>
<p>This book introduces basic SOA concepts and shows how you can use<br />
NetBeans and OpenESB tools to design and deploy a composite application.<br />
After introducing the SOA concepts, you are introduced to various NetBeans<br />
Editors and aids that you need to understand and work with to design a<br />
composite application. The last part of the book deals with a full fl edged<br />
incremental example on how you can build a complex composite application with<br />
necessary screen shots accompanied by the source code available on the<br />
website.</p>
<h1>What This Book Covers</h1>
<p><b><i>Chapter 1</i></b> introduces SOA and BPEL to the readers with simple examples and<br />
gives an overview of the JBI components and runtime required to build<br />
composite applications. This chapter also gives you an overview of the need for<br />
SOA-based applications in companies by depicting an example of an imaginary<br />
AirlinesAlliance system.</p>
<p><b><i>Chapter 2</i></b> shows you how you can quickly setup NetBeans IDE and other<br />
runtime environments including OpenESB runtime and BPEL engine. There are<br />
many software/tools mentioned in this chapter that you need to download and<br />
configure to get started building composite applications using NetBeans.</p>
<p><b><i>Chapter 3</i></b> provides an overview of Java Business Integration (JBI) and the<br />
Enterprise Service Bus (ESB). You will learn about JBI Service Engines and how<br />
they are supported within the NetBeans IDE.</p>
<p><b><i>Chapter 4</i></b> introduces JBI Binding Components and how they provide protocol<br />
independent communication between JBI components. You will also learn about<br />
the support that the NetBeans IDE provides for Binding Components.</p>
<p><b><i>Chapter 5</i></b> introduces the NetBeans BPEL Designer that comes bundled with the<br />
NetBeans IDE. You will also be introduced to the graphical tools/wizards and<br />
palettes available for creating BPEL files.</p>
<p><b><i>Chapter 6</i></b> provides an overview of WSDL and how WSDL documents are<br />
formed. You will learn about the use of WSDL in enterprise applications and the<br />
WSDL editor within the NetBeans IDE.</p>
<p><b><i>Chapter 7</i></b> covers the XML schema designer and shows how it aids rapid<br />
development and testing of XML schema documents.</p>
<p><b><i>Chapter 8</i></b> provides you an overview of the Intelligent Event Processor (IEP)<br />
module and the IEP Service Engine that can be acquired from the OpenESB<br />
software bundle. This chapter also shows the need for an event processing tool<br />
through simple composite application examples.</p>
<p><b><i>Chapter 9</i></b> provides details of fault handling within a BPEL process and shows<br />
how these can be managed within the NetBeans IDE by using graphical tools.</p>
<p><b><i>Chapter 10</i></b> shows you how you can build simple to complex composite<br />
applications and BPEL processes using the NetBeans IDE. The examples in this<br />
chapter are divided into several parts and the source code for all parts is<br />
available in the code bundle.</p>
<p><b><i>Chapter 11</i></b> gives you the overall picture of the composite application and the<br />
need for a composite application to deploy your BPEL processes. The composite<br />
application support provided in NetBeans IDE comes with a visual editor for<br />
adding and configuring WSDL ports and JBI modules.</p>
<h1><center>Service Engines</center></h1>
<p>In Chapter 1, we introduced the concept of SOA applications, and introduced<br />
BPEL processes and JBI applications. To gain a greater understanding of these<br />
concepts and to enable us to develop enterprise level SOA applications, we need to<br />
understand JBI in further depth, and how JBI components can be linked together.<br />
This chapter will introduce the JBI Service Engine and how it is supported within the<br />
NetBeans Enterprise Pack.</p>
<p>In this chapter, we will discuss the following topics:</p>
<ul>
<li>Need for Java Business Integration (JBI)</li>
<li>Enterprise Service Bus</li>
<li>Normalized Message Router</li>
<li>Introduction to Service Engines</li>
<li>NetBeans Support for Service Engines</li>
<li>BPEL Service Engine</li>
<li>Java EE Service Engine</li>
<li>SQL Service Engine</li>
<li>IEP Service Engine</li>
<li>XSLT Service Engine</li>
</ul>
<h1>Need for Java Business Integration (JBI)</h1>
<p>To have a good understanding of Service Engines (a specific type of JBI component),<br />
we need to first understand the reason for Java Business Integration.</p>
<p>In the business world, not all systems talk the same language. They use different<br />
protocols and different forms of communications. Legacy systems in particular can<br />
use proprietary protocols for external communication. The advent and acceptance of<br />
XML has been greatly beneficial in allowing systems to be easily integrated, but XML<br />
itself is not the complete solution.</p><div class="wpInsert wpInsertInPostAd wpInsertMiddle" style="margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* Article-Middle-Med-Rect */
google_ad_slot = "7805667846";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>When some systems were first developed, they were not envisioned to be able<br />
to communicate with many other systems; they were developed with closed<br />
interfaces using closed protocols. This, of course, is fine for the system developer,<br />
but makes system integration very difficult. This closed and proprietary nature<br />
of enterprise systems makes integration between enterprise applications very<br />
difficult. To allow enterprise systems to effectively communicate between each other,<br />
system integrators would use vendor-supplied APIs and data formats or agree on<br />
common exchange mechanisms between their systems. This is fine for small short<br />
term integration, but quickly becomes unproductive as the number of enterprise<br />
applications to integrate gets larger. The following figure shows the problems with<br />
traditional integration.</p>
<p><center><img src="images/2009/10/NetBeans-IDE/1.GIF"/></center></p>
<p>As we can see in the figure, each third party system that we want to integrate with<br />
uses a different protocol. As a system integrator, we potentially have to learn new<br />
technologies and new APIs for each system we wish to integrate with. If there are<br />
only two or three systems to integrate with, this is not really too much of a problem.<br />
However, the more systems we wish to integrate with, the more proprietary code we<br />
have to learn and integration with other systems quickly becomes a large problem.</p>
<p>To try and overcome these problems, the Enterprise Application Integration (EAI)<br />
server was introduced. This concept has an integration server acting as a central<br />
hub. The EAI server traditionally has proprietary links to third party systems, so the<br />
application integrator only has to learn one API (the EAI server vendors). With this<br />
architecture however, there are still several drawbacks. The central hub can quickly<br />
become a bottleneck, and because of the <b>hub-and-spoke</b> architecture, any problems<br />
at the hub are rapidly manifested at all the clients.</p>
<h1>Enterprise Service Bus</h1>
<p>To help solve this problem, leading companies in the integration community<br />
(led by Sun Microsystems) proposed the Java Business Integration Specification<br />
Request (JSR 208) (Full details of the JSR can be found at http://jcp.org/en/jsr/<br />
detail?id=208). JSR 208 proposed a standard framework for business integration<br />
by providing a standard set of service provider interfaces (SPIs) to help alleviate the<br />
problems experienced with Enterprise Application Integration.</p>
<p>The standard framework described in JSR 208 allows pluggable components to be<br />
added into a standard architecture and provides a standard common mechanism for<br />
each of these components to communicate with each other based upon WSDL. The<br />
pluggable nature of the framework described by JSR 208 is depicted in the following<br />
figure. It shows us the concept of an Enterprise Service Bus and introduces us to the<br />
Service Engine (SE) component:</p>
<p><center><img src="images/2009/10/NetBeans-IDE/2.GIF"/></center></p>
<p>JSR 208 describes a service engine as a component, which provides business<br />
logic and transformation services to other components, as well as consuming<br />
such services. SEs can integrate Java-based applications (and other resources), or<br />
applications with available Java APIs.</p>
<p>
<pre><code>
	Service Engine is a component which provides (and consumes) business
	logic and transformation services to other components. There are
	various Service Engines available, such as the BPEL service engine
	for orchestrating business processes, or the Java EE service engine for
	consuming Java EE Web Services. We will discuss some of the more
	common Service Engines later in this chapter.
</code></pre>
</p>
<h1>The Normalized Message Router</h1>
<p>As we can see from the previous figure, SE&#8217;s don&#8217;t communicate directly with each<br />
other or with the clients, instead they communicate via the NMR. This is one of the<br />
key concepts of JBI, in that it promotes loose coupling of services.</p>
<p>So, what is NMR and what is its purpose? NMR is responsible for taking messages<br />
from clients and routing them to the appropriate Service Engines for processing.<br />
(This is not strictly true as there is another standard JBI component called the Binding<br />
Component responsible for receiving client messages. Binding Components are<br />
discussed in Chapter 4. Again, this further enhances the support for loose coupling<br />
within JBI, as Service Engines are decoupled from their transport infrastructure).</p>
<p>NMR is responsible for passing normalized (that is based upon WSDL) messages<br />
between JBI components. Messages typically consist of a payload and a message<br />
header which contains any other message data required for the Service Engine to<br />
understand and process the message (for example, security information). Again, we<br />
can see that this provides a loosely coupled model in which Service Engines have no<br />
prior knowledge of other Service Engines. This therefore allows the JBI architecture<br />
to be flexible, and allows different component vendors to develop standard<br />
based components.</p>
<p>
<pre><code>
	Normalized Message Router enables technology for allowing messages to
	be passed between loosely coupled services such as Service Engines.
</code></pre>
</p>
<p>The figure below gives an overview of the message routing between a client<br />
application and two service engines, in this case the EE and SQL service engines.</p>
<p><center><img src="images/2009/10/NetBeans-IDE/3.GIF"/></center></p>
<p>In this figure, a request is made from the client to the JBI Container. This request<br />
is passed via NMR to the EE Service Engine. The EE Service Engine then makes<br />
a request to the SQL Service Engine via NMR. The SQL Service Engine returns a<br />
message to the EE Service Engine again via NMR. Finally, the message is routed back<br />
to the client through NMR and JBI framework. The important concept here is that<br />
NMR is a message routing hub not only between clients and service engines, but also<br />
for intra-communication between different service engines.</p>
<p>The entire architecture we have discussed is typically referred to as an Enterprise<br />
Service Bus.</p>
<p>
<pre><code>
	<i>Enterprise Service Bus (ESB)</i> is a standard-based middleware architecture
	that allows pluggable components to communicate with each other via a
	messaging subsystem.
</code></pre>
</p>
<p>Now that we have a basic understanding of what a Service Engine is, how<br />
communication is made between application clients and Service Engines, and<br />
between Service Engines themselves, let&#8217;s take a look at what support the NetBeans<br />
IDE gives us for interacting with Service Engines.</p>
<div class="wpInsert wpInsertInPostAd wpInsertBelow" style="margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* JB-Footer-LU 468x15 */
google_ad_slot = "8789107210";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>]]></content:encoded>
			<wfw:commentRss>http://www.javabeat.net/2009/10/building-soa-based-composite-applications-using-netbeans-ide-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Benefits of using Web Services</title>
		<link>http://www.javabeat.net/2008/09/benefits-of-using-web-services/</link>
		<comments>http://www.javabeat.net/2008/09/benefits-of-using-web-services/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 13:03:48 +0000</pubDate>
		<dc:creator>JavaBeat</dc:creator>
				<category><![CDATA[SOA]]></category>
		<category><![CDATA[WebService]]></category>

		<guid isPermaLink="false">http://www.javabeat.net/examples/?p=249</guid>
		<description><![CDATA[<p>Connect to us ( <a href="https://twitter.com/javabeat">@twitter</a> | <a href="https://www.facebook.com/javabeat.net">@facebook )</p><p>Benefits of using Web Services Exposing the function on to network: A Web service is a unit of managed code that can be remotely invoked using HTTP, that is, it can be activated using HTTP requests. So, Web Services allows you to expose the functionality of your existing code over the network. Once it is [...]</p>]]></description>
				<content:encoded><![CDATA[<p>Connect to us ( <a href="https://twitter.com/javabeat">@twitter</a> | <a href="https://www.facebook.com/javabeat.net">@facebook )</p><div class="wpInsert wpInsertInPostAd wpInsertLeft" style="float: left; margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* Article-Rect */
google_ad_slot = "9976259118";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><h3>Benefits of using Web Services</h3>
<p>
Exposing the function on to network: A Web service is a unit of managed code that can be remotely invoked using HTTP,  that is, it can be activated using HTTP requests. So, Web Services allows you to expose the functionality of your existing code over the network. Once it is exposed on the network, other application can use the functionality of your program.
</p>
<p>
Connecting Different Applications: Web Services allows different applications to talk to each other and share data and services among themselves. Other applications can also use the services of the web services. For example VB or .NET application can talk to java web services and vice versa. So, Web services is used to make the application platform and technology independent.
</p>
<p>
Standardized Protocol: Web Services uses standardized industry standard protocol for the communication. All the four layers (Service Transport, XML Messaging, Service Description and Service Discovery layers) uses the well defined protocol in the Web Services protocol stack. This standardization of protocol stack gives the business many advantages like wide range of choices, reduction in the cost due to competition and increase in the quality.
</p>
<p>
Low Cost of communication: Web Services uses SOAP over HTTP protocol for the communication, so you can use your existing low cost internet for implementing Web Services. This solution is much less costly compared to proprietary solutions like EDI/B2B.
</p>
<p>
Support for Other communication means: Beside SOAP over HTTP, Web Services can also be implemented on other reliable transport mechanisms. So, it gives flexibility use the communication means of your requirement and choice. For example Web Services can also be implemented using ftp protocol (Web services over FTP).
</p><div class="wpInsert wpInsertInPostAd wpInsertMiddle" style="margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* Article-Middle-Med-Rect */
google_ad_slot = "7805667846";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>
Loosely Coupled Applications: Web Services are self-describing software modules which encapsulates discrete functionality. Web Services are accessible via standard Internet communication protocols like XML and SOAP. These Web Services can be developed in any technologies (like c++, Java, .NET, PHP, Perl etc.) and any application or Web Services can access these services. So, the Web Services are loosely coupled application and can be used by applications developed in any technologies. For example, I have heard of people developing Web Services using Java technologies and using the Web Services in VB or .NET applications.
</p>
<p>
Web Services Sharing: These days due to complexness of the business, organizations are using different technologies like EAI, EDI, B2B, Portals etc. for distributing computing. Web Services supports all these technologies, thus helping the business to use existing investments in other technologies.
</p>
<p>
Web Services are Self Describing: Web Services are self describing applications, which reduces the software development time. This helps the other business partners to quickly develop application and start doing business. This helps business to save time and money by cutting development time.
</p>
<p>
Automatic Discovery: Web Services automatic discovery mechanism helps the business to easy find the Service Providers. This also helps your customer to find your services easily. With the help of Web Services your business can also increase revenue by exposing their own Web Services available to others.
</p>
<p>
Business Opportunity: Web Services has opened the door to new business opportunities by making it easy to connect with partners.</p>
<div class="wpInsert wpInsertInPostAd wpInsertBelow" style="margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* JB-Footer-LU 468x15 */
google_ad_slot = "8789107210";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>]]></content:encoded>
			<wfw:commentRss>http://www.javabeat.net/2008/09/benefits-of-using-web-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is SOA?</title>
		<link>http://www.javabeat.net/2008/09/what-is-soa/</link>
		<comments>http://www.javabeat.net/2008/09/what-is-soa/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 13:03:06 +0000</pubDate>
		<dc:creator>JavaBeat</dc:creator>
				<category><![CDATA[SOA]]></category>
		<category><![CDATA[WebService]]></category>

		<guid isPermaLink="false">http://www.javabeat.net/examples/?p=247</guid>
		<description><![CDATA[<p>Connect to us ( <a href="https://twitter.com/javabeat">@twitter</a> | <a href="https://www.facebook.com/javabeat.net">@facebook )</p><p>SOA Service Oriented Architecture or SOA for short is a new architecture for the development of loosely coupled distributed applications. In fact service-oriented architecture is collection of many services in the network. These services communicate with each other and the communications involves data exchange &#38; even service coordination. Earlier SOA was based on the DCOM [...]</p>]]></description>
				<content:encoded><![CDATA[<p>Connect to us ( <a href="https://twitter.com/javabeat">@twitter</a> | <a href="https://www.facebook.com/javabeat.net">@facebook )</p><div class="wpInsert wpInsertInPostAd wpInsertLeft" style="float: left; margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* Article-Rect */
google_ad_slot = "9976259118";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><h3>SOA</h3>
<p>
<b><i>Service Oriented Architecture</i></b> or <b><i>SOA</i></b> for short is a new architecture for the development of loosely coupled distributed applications. In fact service-oriented architecture is collection of many services in the network. These services communicate with each other and the communications involves data exchange &amp; even service coordination. Earlier SOA was based on the DCOM or Object Request Brokers (ORBs). Nowadays SOA is based on the Web Services.
</p>
<p>
Broadly <b><i>SOA</i></b> can be classified into two terms: Services and Connections.
</p>
<h3>Services</h3>
<p>
A service is a function or some processing logic or business processing that is well-defined, self-contained, and does not depend on the context or state of other services. Example of Services are Loan Processing Services, which can be self-contained unit for process the Loan  Applications. Other example may be Weather Services, which can be used to get the weather information. Any application on the network can use the service of the Weather Service to get the weather information.</p><div class="wpInsert wpInsertInPostAd wpInsertMiddle" style="margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* Article-Middle-Med-Rect */
google_ad_slot = "7805667846";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<h3>Connections</h3>
<p>
Connections means the link connecting these self-contained distributed services with each other, it enable client to Services communications. In case of Web services SOAP over HTTP is used to communicate the between services.</p>
<p>
The following figure is a typical example of the service-oriented architecture. It shows how a service consumer sends a service request to a service provider. After accepting the request, service provider send a message to the service consumer. In this case a service provider can also be a service consumer.</p>
<h3>Different Technologies Used</h3>
<p>
<b><i>SOA</i></b> is much different from point-to-point architectures. <b><i>SOA</i></b> comprise loosely coupled, highly interoperable application services. These services can be developed in different development technologies (such as Java, .NET, C++, PERL, PHP), the software components become very reusable i.e. the same C# (C Sharp) service may be used by a Java application and / or any other programming language. WSDL defines an standard,  which encapsulates / hides the vendor / language specific implementation from the calling client / service.</p>
<div class="wpInsert wpInsertInPostAd wpInsertBelow" style="margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* JB-Footer-LU 468x15 */
google_ad_slot = "8789107210";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>]]></content:encoded>
			<wfw:commentRss>http://www.javabeat.net/2008/09/what-is-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Service Oriented Java Business Integration</title>
		<link>http://www.javabeat.net/2008/03/service-oriented-java-business-integration/</link>
		<comments>http://www.javabeat.net/2008/03/service-oriented-java-business-integration/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 12:09:32 +0000</pubDate>
		<dc:creator>krishnas</dc:creator>
				<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.javabeat.net/?p=159</guid>
		<description><![CDATA[<p>Connect to us ( <a href="https://twitter.com/javabeat">@twitter</a> | <a href="https://www.facebook.com/javabeat.net">@facebook )</p><p>Service Oriented Java Business Integration You&#8217;re all in the business of software development. Some of you are architects and developers while few others are technology managers and executives. For many of you, ESB is encroaching and JBI is still an unknown—a risk previously avoided but now found to be inescapable. Let us tame these buzzwords [...]</p>]]></description>
				<content:encoded><![CDATA[<p>Connect to us ( <a href="https://twitter.com/javabeat">@twitter</a> | <a href="https://www.facebook.com/javabeat.net">@facebook )</p><div class="wpInsert wpInsertInPostAd wpInsertLeft" style="float: left; margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* Article-Rect */
google_ad_slot = "9976259118";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><p><strong>Service Oriented Java Business Integration</strong></p>
<p>You&#8217;re all in the business of software development. Some of you are architects and developers while few others are technology managers and executives. For many of you, <strong><em>ESB</em></strong> is encroaching and <strong><em>JBI</em></strong> is still an unknown—a risk previously avoided but now found to be inescapable. Let us tame these buzzwords in the context of <strong><em>SOA</em></strong> and Integration.</p>
<p>While you do the day to day programming for solving business problems, you will be generating business code as well as business integration code. The traditional Java/J2EE APIs provide you with enough tools and frameworks to do the business coding. The business code will help you to implement a business service such as creating orders or finding products. On the contrary, business integration code wires together multiple applications and systems to provide seamless information flow. It deals with patterns of information exchange across systems and services, among other things. This is where the new Java API for Integration—<strong><em>Java Business Integration (JBI)</em></strong> seeks attention.</p>
<p><strong><em> JBI</em></strong> provides a collaboration framework which has standard interfaces for integration components and protocols to plug into, thus allowing the assembly of <strong><em>Service Oriented Integration (SOI)</em></strong> frameworks following the <strong><em>Enterprise Service Bus (ESB)</em></strong> pattern. <strong><em>JBI</em></strong> is based on JSR 208, which is an extension of <strong><em>Java 2 Enterprise Edition (J2EE)</em></strong>. The book first discusses the various integration approaches available and introduces <strong><em>ESB</em></strong>, which is a new architectural pattern which can facilitate integrating services. In doing<br />
so, we also introduce ServiceMix, an Apache Open Source Java ESB. Thus for each of the subsequent chapters, we limit our discussion to a major concern which we can address using ESB and then also showcase this with samples which you can run using ServiceMix. If you are a person with a non-Java background, the book still benefits you since most of the integration wiring happens in XML configuration files.</p>
<p>The aim of this book is to prepare an architect or developer for building integration solutions using ESB. To that end, this book will take a practical approach, emphasizing how to get things done in ServiceMix with code. On occasions, we will delve into the theoretical aspects of <strong><em>ESB</em></strong>, and such discussions will always be supplemented with enough running samples. The book, thus, attempts to distill some of the knowledge that has emerged over the last decade in the realm of Java Integration. Quite different from the other books in the related topics, you don&#8217;t need a 4GB RAM or some heavy, vendor specific IDE/Workshops to run the samples. Instead, get set with the latest JDK and a text editor and few other lightweight frameworks including Tomcat and you are ready to go. Enough about the hype, supplement with what you&#8217;ve heard with some substance and code. Happy Reading!</p>
<p><strong>What This Book Covers</strong></p>
<p>Chapter 1 begins with a quick tour on Enterprise Integration and the associated issues so that you can better understand the problem which we are trying to solve, rather than following a solution for an unknown problem. We also introduce <strong><em>Enterprise Service Bus (ESB)</em></strong> architecture and compare and contrast that with other integration architectures.</p>
<p>Chapter 2 introduces <strong><em>Java Business Integration (JBI)</em></strong> and inspects the need for another standard for Business Integration, and also looks into the details on what this standard is all about.</p>
<p>Chapter 3 introduces ServiceMix, which is an open source ESB platform in the Java programming language, built from the ground up with JBI APIs and principles. It runs through a few other ESB products also.</p>
<p>Chapter 4 looks at how we have been binding services locally or remotely even before the ESB became popular. The chapter will demonstrate how tunneling using conventional J2EE tools will help to expose even technology-specific API services. An example of such a service is an EJB service to be exposed through firewalls over HTTP so that the service becomes technology agonistic.</p>
<p>Chapter 5 introduces XFire, which is a new generation Java SOAP framework to easily expose web services. Here we demonstrate the integration capabilities of the XFire. Then we can do integration using XFire within the JBI<br />
Architecture also.</p>
<p>Chapter 6 teaches you JBI packaging and deployment. After going through this chapter the reader will be able to build, package, and deploy integration artifacts as standard JBI packages into the JBI container.</p>
<p>Chapter 7 teachs you how to create your own components and deploy them onto the <strong><em>JBI</em></strong> container. This chapter visits the core API from the ServiceMix as well as from the JBI specification which will function as useful helper classes using which you can develop integration components quickly.</p>
<p>Chapter 8 shows you how to bind Enterprise Java Beans components to the <strong><em>ESB</em></strong>. EJB is the Distributed Component paradigm in the Java-J2EE world and the industry has a lot invested in this technology. Coexisting services with those components will help you to reuse those existing investments so that we can continue building new systems based on higher levels of SOA maturity.</p>
<p>Chapter 9 shows POJO Binding using JSR181 to the <strong><em>ESB</em></strong>. POJO components can be easily exposed as <strong><em>WSDL</em></strong>-compliant services to the JBI bus.</p>
<p>Chapter 10 illustrates how to bind the web services to the ServiceMix ESB, thus creating a web services gateway at the <strong><em>ESB</em></strong> layer.</p>
<p>Chapter 11 looks at how <strong><em>Java Message Service (JMS)</em></strong>, which is a platform dependent messaging technology, can increase the QOS features of web services by making web services accessible through the JMS channel.</p>
<p>Chapter 12 introduces Java XML binding and XStream, which is a simple open source library to serialize the Java objects to XML and back again. We will show the XStream integration with ESB demonstrating streaming of data across<br />
the bus.</p>
<p>Chapter 13 visits the JDK Proxy classes and then explains the JBI Proxy in detail with examples. We show a practical use of the<strong><em> JBI Proxy</em></strong>—Proxying the external web services in the JBI bus.</p>
<p>Chapter 14 explains versioning in the SOA context and explains various strategies and approaches to versioning services. It also explains and demonstrates a versioning sample leveraging the targetNamespace attribute. Versioning services, especially versioning of web services, is a topic of heated discussion in many forums and sites.</p>
<p>Chapter 15 explains that the EAI patterns are nuggets of advice made out of aggregating basic Message Exchange Pattern elements to solve frequently recurring integration problems. We can look at EAI patterns as design patterns for solving integration problems. This chapter will demonstrate many of the common EAI patterns.</p>
<p>Chapter 16 looks into a sample use case. One of the useful applications of <strong><em>ESB</em></strong> is to provide a &#8220;Services Workbench&#8221; wherein which we can use various integration patterns available to aggregate services to carry out the business processes.</p>
<p>Chapter 17 visits a few selected QOS features such as Transactions, Security, Clustering, and Management which can impact the programming and deployment aspects using <strong><em>ESB</em></strong>.</p>
<h2>Bind Web Services in ESB — Web Services Gateway</h2>
<p>Since SOI is all about integrating multiple SOA-based systems, web services play a critical role in the integration space. This chapter is all about the importance of web services in integration. We will use the samples to illustrate how to bind web services with the ServiceMix ESB to facilitate integration. We will cover the following in this chapter:</p>
<p>Web services and binding • Introduction to HTTP • ServiceMix&#8217;s servicemix-http component • The consumer and provider roles for the ServiceMix JBI components • servicemix-http in the consumer and provider roles • Web service binding (Gateway) sample.</p>
<h2>Web Services</h2>
<p>Web services separate out the service contract from the service interface. This feature is one of the many characteristic required for an SOA-based architecture. Thus, even though it is not mandatory that we use the web service to implement an SOA-based architecture, yet it is clearly a great enabler for SOA.</p>
<p>Web services are hardware, platform, and technology neutral The producers and/or consumers can be swapped without notifying the other party, yet the information can flow seamlessly. An ESB can play a vital role to provide this<br />
separation.</p>
<h2>Binding Web Services</h2>
<p>A web service&#8217;s contract is specified by its WSDL and it gives the endpoint details to access the service. When we bind the web service again to an ESB, the result will be a different endpoint, which we can advertise to the consumer. When we do so, it is very critical that we don&#8217;t lose any information from the original web service contract.</p>
<h2>Why Another Indirection?</h2>
<p>There can be multiple reasons for why we require another level of indirection between the consumer and the provider of a web service, by binding at an ESB. Systems exist today to support business operations as defined by the business processes. If a system doesn&#8217;t support a business process of an enterprise, that system is of little use. Business processes are never static. If they remain static then there is no growth or innovation, and it is doomed to fail.</p>
<p>Hence, systems or services should facilitate agile business processes. The good architecture and design practices will help to build &#8220;services to last&#8221; but that doesn&#8217;t mean our business processes should be stable. Instead, business processes will evolve by leveraging the existing services. Thus, we need a process workbench to assemble and orchestrate services with which we can &#8220;Mix and Match&#8221; the services. ESB is one of the architectural topologies where we can do the mix and match of services. To do this, we first bind the existing (and long lasting) services to the ESB. Then leverage the ESB services, such as aggregation and translation, to mix and match them and<br />
advertise new processes for businesses to use.</p>
<p>Moreover, there are cross service concerns such as versioning, management, and monitoring, which we need to take care to implement the SOA at higher levels of maturity. The ESB is again one way to do these aspects of service orientation.</p>
<h2>HTTP</h2>
<p>HTTP is the World Wide Web (www) protocol for information exchange. HTTP is based on character-oriented streams and is firewall-friendly. Hence, we can also exchange XML streams (which are XML encoded character streams) over HTTP. In a web service we exchange XML in the SOAP (Simple Object Access Protocol) format over HTTP. Hence, the HTTP headers exchanged will be slightly different than a normal web page interaction. A sample web service request header is shown as follows:</p>
<pre class="brush: java; title: ; notranslate">
 GET /AxisEndToEnd/services/HelloWebService?WSDL HTTP/1.1
 User-Agent: Java/1.6.0-rc
 Host: localhost:8080
 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
 Connection: keep-alive
 POST /AxisEndToEnd/services/HelloWebService HTTP/1.0
 Content-Type: text/xml; charset=utf-8
 Accept: application/soap+xml, application/dime, multipart/related,
 text/*
 User-Agent: Axis/1.4
 Host: localhost:8080
 Cache-Control: no-cache
 Pragma: no-cache
 SOAPAction: &quot;&quot;
 Content-Length: 507
</pre>
<p>The first line contains a method, a URI and an HTTP version, each separated by one or more blank spaces. The succeeding lines contain more information regarding the web service exchanged.</p>
<p>ESB-based integration heavily leverages the HTTP protocol due to its open nature, maturity, and acceptability. We will now look at the support provided by the ServiceMix in using HTTP.</p>
<h2>servicemix-http in Detail</h2>
<p>servicemix-http is used for HTTP or SOAP binding of services and components into the ServiceMix NMR. For this ServiceMix uses an embedded HTTP server based on the Jetty.</p>
<p>In Chapter 3, you have already seen the following two ServiceMix components:</p><div class="wpInsert wpInsertInPostAd wpInsertMiddle" style="margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* Article-Middle-Med-Rect */
google_ad_slot = "7805667846";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<ul>
<li>org.apache.servicemix.components.http.HttpInvoker</li>
<li>org.apache.servicemix.components.http.HttpConnector</li>
</ul>
<p>As of today, these components are deprecated and the functionality is replaced by the servicemix-http standard JBI component. A few of the features of the servicemix-http are as follows: Supports</p>
<ul>
<li>SOAP 1.1 and 1.2</li>
<li>Supports MIME with attachments</li>
<li>Supports SSL</li>
<li>Supports WS-Addressing and WS-Security</li>
<li>Supports WSDL-based and XBean-based deployments</li>
<li>Support for all MEPs as consumers or providers</li>
<li>Since servicemix-http can function both as a consumer and a provider, it can effectively replace the previous HttpInvoker and HttpConnector component.</li>
</ul>
<h2>Consumer and Provider Roles</h2>
<p>When we speak of the Consumer and Provider roles for the ServiceMix components, the difference is very subtle at first sight, but very important from a programmer perspective. The following figure shows the Consumer and Provider roles in the ServiceMix ESB:</p>
<p>The above figure shows two instances of servicemix-http deployed in the ServiceMix ESB, one in a provider role and the other in the consumer role. As it is evident, these roles are with respect to the NMR of the ESB. In other words, a consumer role implies that the component is a consumer to the NMR whereas a provider role implies the NMR is the consumer to the component. Based on these roles, the NMR will take responsibility of any format or protocol conversions for the interacting components.</p>
<p>Let us also introduce two more parties here to make the role of a consumer and a provider clear—a client and a service. In a traditional programming paradigm, the client interacts directly with the server (or service) to avail the functionality. In the ESB model, both the client and the service interact with each other only through the ESB. Hence, the client and the service need peers with their respective roles assigned, which in turn will interact with each other. Thus, the ESB consumer and provider roles can be regarded as the peer roles for the client and the service respectively.</p>
<p>Any client request will be delegated to the consumer peer who in turn interacts with the NMR. This is because the client is unaware of the ESB and the NMR protocol or format. However, the servicemix-http consumer knows how to interact with the NMR. Hence any request from the client will be translated by the servicemix-http consumer and delivered to the NMR. On the service side also, the NMR needs to invoke the service. But the server service is neutral of any specific vendor&#8217;s NMR and doesn&#8217;t understand the NMR language as such. A peer provider role will help here. The provider receives the request from the NMR, translates it into the actual format or protocol of the server service and invokes the service. Any response will also follow the reverse sequence.</p>
<h2>servicemix-http XBean Configuration</h2>
<p>The servicemix-http components supports the XBean-based deployment. Since the servicemix-http component can be configured in both the consumer and provider roles, we have two sets of configuration parameters for the component. Let us look into the main configuration parameters:</p>
<p>servicemix-http as consumer: A sample servicemix-http consumer • component configuration is shown as follows: The following table gives the explanation for the main configuration parameters: Attribute Name Type Description Mandatory or Not service QName Service name of the proxy Mandatory endpoint endpoint String Endpoint name of the proxy Mandatory endpoint interfaceName<br />
QName Interface name of the proxy Not Mandatory endpoint targetService QName Service name of the target Not Mandatory. Default endpoint is the value of the service attribute targetEndpoint String Endpoint name of the target Not Mandatory. Default is endpoint the value of the endpoint attribute role String Whether a consumer or a Mandatory. Value should provider be consumer locationURI URI Http URL where this proxy Mandatory endpoint will be exposed so that the ESB clients can access the proxy service. defaultMEP<br />
URI The MEP URI by which Not Mandatory clients interact with the consumer component soap boolean If it is true, the component Not Mandatory. Default will parse the SOAP value is false. envelope and pass the contents to the NMR wsdlResource Spring If it is set, the WSDL will Not Mandatory Resource be retrieved from this configured Spring resource.</p>
<p>Thus, the locationURI attribute in the servicemix-http consumer refers to the Http URL where this proxy endpoint is exposed, so that the ESB clients can access the proxy service. Later we will look at how to generate static cli-ent stubs out of this proxy URI.</p>
<p>servicemix-http as provider: While configuring the provider, there are a few •aspects to be taken care of with respect to the WSDL. If we have the sample WSDL as shown as follows:</p>
<p>Now, while configuring the provider component you need to ensure that the service (IHelloWebService) and the endpoint (HelloWebService) match the service name and port elements of the WSDL that you use to correctly return the WSDL for the endpoint. Moreover, the service name will use the targetNamespace for the WSDL (http://AxisEndToEnd.axis.apache. binildas.com).</p>
<p>A sample servicemix-http provider component configuration is shown as follows: The following table the gives the explanation for the main configuration parameters: Attribute Name Type Description Mandatory or Not service QName Service name of the exposed Mandatory endpoint endpoint String Endpoint name of the exposed Mandatory endpoint interfaceName QName Interface name of the exposed Not Mandatory endpoint role String Whether a consumer or a provider Mandatory. Value should be provider locationURI<br />
URI Http URL of the target service. Mandatory Attribute Name Type Description Mandatory or Not soap boolean If it is true, the component will Not Mandatory. parse the SOAP envelope and pass Default value is the contents to the NMR false. soapAction String The SOAPAction header to be send Not Mandatory. over HTTP when invoking the Default value is &#8220;&#8221;. web service wsdlResource<br />
Spring If it is set, the WSDL will be Not Mandatory Resource retrieved from this configured Spring resource. servicemix-http Lightweight Configuration</p>
<p>In addition to the XBean-based configuration, servicemix-http can also be deployed based on the lightweight mode to use in an embedded ServiceMix. The configuration would be as follows:</p>
<h2>Web Service Binding Sample</h2>
<p>We will now look at a complete sample of how to bind a web service to the ServiceMix. While doing so, we will also see how to use the Apache Axis client-side tools to generate stubs based on the binding at ServiceMix. Normally we point to the actual WSDL URL to generate client stubs, but in this example we will point the tools to the ServiceMix binding. Then the ServiceMix binding will act completely as the web service gateway visible to the external clients, thus shielding the actual web service in the background.</p>
<h2>Sample Use Case</h2>
<p>By using a web services gateway, you can use the intermediation to build and deploy the web services routing application. But keep in mind that the routing is just one of the various technical functionalities that you can implement at the gateway. For our sample use case, we have an external web service, deployed and hosted in a node remote to the ESB. In the ESB, we will set up a Web Services Gateway, which can proxy the remote web service. The entire setup is shown in the following figure:</p>
<p>Along with the previous discussion, we need the servicemix-http in the consumer and provider roles. MyConsumerService is a servicemix-http component in the consumer role and IHelloWebService is a servicemix-http component in the provider role. Both of them are shown in the following figure:</p>
<p>Let us now take a closer look at the gateway configured in the ESB. Here, we configure servicemix-http in both the consumer and provider roles and hook it to the NMR. Any client requests are intercepted by the consumer and the consumer then sends the request on behalf of the client to the NMR. From there the request will be routed to the destination web service through the provider. The message flow is marked in sequence in the following figure:</p>
<h2>Deploy the Web Service</h2>
<p>As a first step, if you haven&#8217;t done it before, edit examples.PROPERTIES (provided along with the code download for this chapter), and change the paths there to match your development environment. The code download for this chapter also includes a README.txt file, which gives detailed steps to build and run the samples. We have a simple web service in the codebase present in the folder ch10\ServiceMixHttpBinding\01_ws. To deploy the web service, first change directory to the ch10\ServiceMixHttpBinding folder and execute the ant command as follows:</p>
<pre class="brush: java; title: ; notranslate">cd ch10\ServiceMixHttpBinding ant</pre>
<p>In fact, the build.xml file will call the build in the subprojects to build the web service as well as the ServiceMix subproject. The web service is built completely and the war file can be found in the folder ch10\ServiceMixHttpBinding\01_ws\dist\AxisEndToEnd.war. To deploy the web service, drop this war file into your favorite web server&#8217;s webapps folder and restart the web server, if necessary.</p>
<p>Now to make sure that your web service deployment works fine, we have provided a web service test client. To invoke the test client, execute the following commands:</p>
<pre class="brush: java; title: ; notranslate">cd ch10\ServiceMixHttpBinding&#92;&#48;1_ws ant run</pre>
<p>We can also check the web service deployment by accessing the WSDL from the URL: http://localhost:8080/AxisEndToEnd/services/HelloWebService?WSDL Let us list out the WSDL here, since we want to compare it with the WSDL accessed from the ServiceMix binding later to cross check the similarities. This is provided in ch10\ServiceMixHttpBinding\HelloWebService-axis.wsdl</p>
<h2>XBean-based servicemix-http Binding</h2>
<p>For XBean-based deployment of servicemix-http, our xbean.xml matches the following:.</p>
<p>The previous execution of ant has already built and packaged the service assembly for the sample.</p>
<h2>Deploying and Running the Sample</h2>
<p>To deploy the ServiceMix sample, we have the following servicemix.xml: To bring up the ServiceMix, change directory to ch10\ServiceMixHttpBinding and execute the ServiceMix script as follows.</p>
<pre class="brush: java; title: ; notranslate">cd ch10\ServiceMixHttpBinding
%SERVICEMIX_HOME%\bin\servicemix servicemix.xml</pre>
<p>We can now test our ServiceMix deployment by using the following test client: ch10\ServiceMixHttpBinding\Client.html Access WSDL and Generate Axis Stubs to Access the Web Service Remotely Now for the really cool stuff. As we discussed earlier, we have set up the ServiceMix as a separate web service gateway in front of the actual web service deployment. Now we have to check whether we can access the WSDL from the ServiceMix. For this, we can point our browser using the standard WSDL query string, like:<br />
http://localhost:8081/services/HelloWebService/?wsdl or<br />
http://localhost:8081/services/HelloWebService/main.wsdl Note that, the above URL points to the locationURI attribute configured for the consumer component, which is http://localhost:8081/services/ HelloWebService. The WSDL placed in<br />
location ch10\ServiceMixHttpBinding\ HelloWebService-esb.wsdl, matches the following code:</p>
<p>If we compare the two WSDL, the major difference is in the service description section. Here, ServiceMix forms the service and port name taking values from service and endpoint attributes of the consumer service—MyConsumerService and HelloWebService respectively.</p>
<p>If we are able to retrieve the WSDL, the next step is to use the Apache Axis tools to auto-generate the client-side stubs and binding classes, using which we can write simple Java client code to access the service through HTTP channel. The Axis client classes are placed in the directory ch10\ServiceMixHttpBinding\03_AxisClient.</p>
<p>To do that, we have to use the wsdl2java ant task. Let us first declare the task definition and execute that task to generate the stub classes.</p>
<p>The task will extract the WSDL from the specified location and generate the following client-side artifacts:</p>
<ul>
<li>com\binildas\apache\axis\AxisEndToEnd\HelloWebServiceBindingStub. java</li>
<li>com\binildas\apache\axis\AxisEndToEnd\IHelloWeb.java</li>
<li>com\binildas\apache\axis\AxisEndToEnd\MyConsumerService.java</li>
<li>com\binildas\apache\axis\AxisEndToEnd\MyConsumerServiceLocator. java</li>
</ul>
<p>The Client Java class can be written against these generated files as follows:</p>
<p>public class Client { private static String wsdlUrl = &#8220;http://localhost:8081/services/HelloWebService/main.wsdl&#8221;; private static String namespaceURI =&#8221;http://AxisEndToEnd. axis.apache.binildas.com&#8221;; private static String localPart<br />
= &#8220;MyConsumerService&#8221;; protected void executeClient(String[] args)throws<br />
Exception { MyConsumerService myConsumerService = null; IHelloWeb iHelloWeb =<br />
null; if(args.length == 3) { myConsumerService = new<br />
MyConsumerServiceLocator(args[0], new QName(args[1], args[2])); } else {<br />
myConsumerService = new MyConsumerServiceLocator(wsdlUrl, new<br />
QName(namespaceURI, localPart)); } iHelloWeb =<br />
myConsumerService.getHelloWebService(); } public static void main(String[]<br />
args)throws Exception { Client client = new Client();<br />
client.executeClient(args); } }</p>
<p>To build the entire Axis client codebase, assuming that the ServiceMix is up and running, change directory to ch10\ServiceMixHttpBinding\03_AxisClient, which contains a build.xml file. Execute ant as shown as follows:</p>
<pre class="brush: java; title: ; notranslate">cd ch10\ServiceMixHttpBinding&#92;&#48;3_AxisClient
ant</pre>
<p>This will generate the required Axis client-side stubs and compile the client classes. Now to run the client, execute the following command: ant run</p>
<h2>Summary</h2>
<p>We started this chapter by introducing the servicemix-http JBI component. Then we looked at the samples of binding web services to ESB using the servicemix-http binding component. By doing so, we have, in fact, implemented a complete functional web services gateway at the ESB.</p>
<p>A lot of times, we utilize this pattern to expose useful web services hosted deep inside your corporate networks protected by multiple levels of firewall. When we do so, the web services gateway is the access point for any external client. It should mock the actual web service not only in providing the functionality but also in exposing the web services contract (WSDL). Now, do you want to improve the QOS attributes of your web service?</p>
<p>The next chapter will take you through a similar exercise by demonstrating how to access your HTTP-based web services through an MOM channel like JMS.</p>
<div class="wpInsert wpInsertInPostAd wpInsertBelow" style="margin: 5px; padding: 0px;"><script type="text/javascript"><!--
google_ad_client = "ca-pub-1490953723360528";
/* JB-Footer-LU 468x15 */
google_ad_slot = "8789107210";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>]]></content:encoded>
			<wfw:commentRss>http://www.javabeat.net/2008/03/service-oriented-java-business-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
