General questions for users that are new to OpenESB and possibly integration in general:
What is an Enterprise Service Bus (ESB)?
An Enterprise Service Bus (ESB) is a distributed infrastructure used for enterprise integration. It consists of a set of service containers, which integrate various types of IT assets. The containers are interconnected with a reliable messaging bus. Service containers adapt IT assets to a standard services model, based on XML message exchange using standardized message exchange patterns. The ESB provides services for transforming, orchestrating, mediating and routing messages as well as the ability to centrally administer the distributed system.
Note: Read a good conceptual overview of an Enterprise Service Bus on Wikipedia
What is OpenESB?
OpenESB is a project community that is part of the wider GlassFish community hosted on java.net. It hosts a growing number of open source artifacts that meet the requirements of an ESB and Event-Driven Architectures (EDA). These artifacts include a core runtime engine, best-of-breed components (transports and engines), associated tooling, business activity monitoring and management tools and other sub-projects considered relevant for implementing an ESB. OpenESB is a Sun Microsystems-led community with partners and individual users also continuing to contribute to the project with components and feedback.
What is GlassFish ESB?
GlassFish ESB combines stable components from OpenESB and the GlassFish application server and NetBeans IDE, into a free-to-download single binary distribution, for which commercial support is also available from Sun Microsystems. Go to the GlassFish ESB site
for more details.
What does OpenESB offer?
OpenESB offers a core runtime which implements a standards-based, service oriented architecture (SOA) paradigm for providing ESB capabilities, based on the JBI specification
. OpenESB provides the ability to plug in a number of JBI components which manage the runtime connectivity and integration with external systems and expose them as services. This allows the developer to write mediation, routing, transformation and orchestration logic using a standard SOA-based approach to integration, thus leveraging existing skill sets. The OpenESB runtime can run in a bare JVM
or can be embedded inside a Java EE application server such as GlassFish
which exposes ESB capabilities in an efficient manner to developers writing servlets, EJBs and web services using the Java EE service engine. Using GlassFish also provides the ability to secure and configure the desired Quality of Service (QoS) for your services using the popular open source Metro web service stack
. You can read more about the goals and architecture of Project OpenESB and JBI on the About OpenESB page
Which components can I use with OpenESB?
OpenESB includes a growing set of binding components (i.e. transports) that implement the JBI specification. These include HTTP
and many other components
, some of which have been contributed by community partners
Other components that are provided with OpenESB include a BPEL Service Engine for service orchestration, complex event processing using the Intelligent Event Processor and the ability to transform messages using the XSLT Service Engine.
It is also possible to use binding components and service engines available from other JBI implementations within OpenESB.
How do I get started with OpenESB?
You can download the latest build of OpenESB for your required platform on the Downloads page
. You can learn more about the architecture and how OpenESB works with JBI by watching the OpenESB Introduction Screencast
If you want to start by seeing how to implement OpenESB applications, you can go straight to the OpenESB Introduction Tutorial which contains a series of screencasts for you to view and try yourself.
You can also take a look at the OpenESB Documentation . There are tutorials and screencasts frequently being made available on the site so check back often.
How do I get help or give feedback on OpenESB?
If you have questions or require general help on any aspects of OpenESB, please send an e-mail to firstname.lastname@example.org
. You may also report issues and enhancement requests in the Issue Tracker
What's the best way to keep track of what's going on with OpenESB?
By becoming a member, you're automatically subscribed to the "project wide" notifications. You can also look at the Announcements page
where you also subscribe to the latest news. Furthermore, you can browse or subscribe to a Project Mailing List
and be notified whenever any comments are posted.
You can also learn of major announcements relating to the wider GlassFish community by subscribing to The Aquarium blog and read interesting articles from the group working on OpenESB at the SOA/BI Planet .
Can I get commercial 24x7 support for OpenESB?
OpenESB is just a community so it is not possible to purchase support directly for OpenESB. However, stable versions of the artifacts and components found in OpenESB are released and now available
in the commercially-supported suite offering from Sun Microsystems called Sun Java ESB Suite
. If support for only OpenESB components running on GlassFish is required, commercial support from Sun will soon be available for GlassFish ESB
I'm new to integration. Can you recommend a book that I can read to learn more about it?
A very good book on integration is Enterprise Integration Patterns by Gregor Hophe and Bobby Woolf. It provides an excellent collection of many messaging-based integration solutions. Read the Integration Patterns Overview
for a good overview of these patterns.
Do I need a specific Java EE platform to use OpenESB?
OpenESB supports Java EE platforms for GlassFish, JBoss, and the Sun Java Application Server Enterprise Edition. Check the release notes with each download to get the latest list of supported Java EE servers and operating platforms.
Does OpenESB include a BPEL engine?
OpenESB includes a JBI-compliant BPEL service engine
which is WS-BPEL 2.0 compliant. In addition to this, OpenESB's loosely coupled architecture will support plugging in multiple third-party BPEL language implementations, compliant with the JBI specification, from a variety of vendors.
Questions on the JBI specification and how it relates to OpenESB:
What is Java Business Integration (JBI)?
Java Business Integration (JBI) is Java Community Process (JCP) specification - JSR 208
- that defines the foundation of integration and service-oriented architecture (SOA) solutions. It provides two things:
- JBI pluggability: an open, extensible, pluggable platform that enables the collaboration of integration technology (such as business process engines, document transform engines, B2B management, and business rules) with Web services.
- JBI service assembly: a single standard document describing the routing, artifacts, and services that make up a SOA composite application. Think of it as an SOA "super .jar".
- See LearnJBI for more information
Is OpenESB the same as the JBI reference implementation for the JBI SDK?
No. Although based on the JBI SDK, OpenESB extends the capabilities of the bare JBI reference implementation with additional service engines, binding components, tools, and management and monitoring services.
What is JBI's relationship to existing standards?
JBI uses XML 1.0 and WSDL 1.1/2.0 as for messaging and service descriptions, respectively.
What is JBI's relationship to Java EE / J2EE?
JBI does not require Java EE (or J2EE). Certain JBI components may require a JavaEE JBI implementation, in order to access technologies such as JTA. The OpenESB core runtime and components may run within a number of Java EE application servers.
Can I use OpenESB to test and validate my JBI service engines?
Yes. OpenESB is regularly tested to ensure conformance to the JBI specification. Milestone builds that have been validated will be identified on the Downloads page. Any other work in progress on the project site or in the CVS tree not identified as having passed the JBI validation tests will be considered out of conformance with the specification. Any derived work will also be considered not to be in conformance with the JBI specification.
How does JBI integrate with other Java technologies like EJB, Servlets, JCA, and JAX-RPC and JAX-WS?
Such integration is supplied in two ways: by plug-in components (service engines, bindings), or by means of a binding. The Open-ESB project is supplying an increasing number of components to integrate standard Java technologies.
Does using JBI require that other departments or companies that my department interacts with use JBI as well?
Not at all. Interaction with external service providers and consumers is accomplished through bindings to standard protocols (such as SOAP or JMS). JBI provides the SOA infrastructure for implementing services (as composite applications), and exposing those services to outside users using bindings (as well as consuming external services via bindings).
I hear a lot of noise about service-oriented architecture (SOA), including JBI. Is JBI the same as SOA?
JBI defines an infrastructure for creating a service-oriented architecture. The main difference between JBI and other ways of constructing a SOA is that JBI is standardized. This means that building a SOA is easier, since you can construct it from third-party components, while avoiding getting locked into proprietary infrastructure (either home-grown or from a vendor).
What is the difference between service-oriented architecture (SOA) and service-oriented integration (SOI)?
SOA is an architectural pattern for constructing systems, based on service descriptions. Such systems are rarely constructed in completely new IT environments; instead, many of the services must come from existing applications within an enterprise. The act of adapting an application (or messaging protocol) to interact with other applications that it was not designed to interoperate with is called integration. Adapting applications and protocols to a SOA is a very common activity, and is called service-oriented integration (SOI).
What is the difference between a service engine and a binding component?
From the JBI perspective, there is very little difference: both function as service providers and consumers. The main difference is location: where are the services being consumed or provided. A service engine does these things locally, while a binding component acts as a proxy for a remote service providers and consumers. JBI has a single API for components, which is used by both service engines and binding components.
Binding Component Questions
Questions relating to the use of specific components and notifications around deprecated components:
How do I build solutions that read CSV or other custom format input files?
You will firstly need to create a custom encoder for reading non-XML file formats. You can do this in the NetBeans IDE by building a custom-defined XML Schema Definition (XSD)
that describes your format. The XML schema editor also provides a testing tool so that you can verify your encoder against your sample files. Once you have defined the encoder, you need to apply the encoder in the message definitions and settings of the component(s) that require it e.g. File BC (as shown in this screencast). This will allow you to see your CSV or custom message format as an XML structure. If your format contains repeating nodes (or multiple records in a single CSV file), you can use a simple BPEL process to iterate over them and perform the required transformations and / or service invocations.
Which component should I use for interacting with JDBC databases?
Use the Database BC
for all of your requirements; for working with tables, prepared statements and stored procedures and functions. Initially, this functionality was separated between the SQL SE and JDBC BC, both of which are now deprecated. Read the announcement to introduce the Database BC and how to migrate to it here
Why are there two components for sending email (SMTP BC and Email BC) and which one should I use?
The Email BC
did not initially handle SMTP but it does now. The SMTP BC can be used for SMTP only but the email BC will become the primary component for mail-related communication (to include IMAP and POP as well as SMTP functionality). Therefore, the SMTP BC will soon be deprecated.
Common questions relating to troubleshooting difficulties found with the installation and working with source.
I have created a java.net user account but whenever I try to use CVS to download the source I get an error message.
The error message is Your account does not have the "VersionControl - Read" permission needed for you to access the page you requested in the OpenESB project (view your permissions:https://www.dev.java.net/servlets/ACLDump ). Either ask the project administrator for more permission, or log in using a different account.
This indicates you have not yet accepted the CDDL click-to-accept license. Go to https://open-esb.dev.java.net/servlets/ProjectClickThrough and follow the directions. If you have done this and are still having problems, contact us at email@example.com
There are two branches in the CVS repository. What are they and which should I use?
The maintenance branch (openesb_maint1) contains the contents of the JBI Software Development Kit (SDK) which was delivered just after the JSR 208 specification was finalized. This branch contains the original RI (with some maintenance added after the Spec. was approved), the samples, build, and test scripts. The Main branch (MAIN) contains the OpenESB project. This project includes many extensions to the original SDK and provides ESB capabilities, bindings, engines, and build scripts. The main branch is under active development and contains code which is being updated frequently. If you want the latest and greatest, but potentially unstable code, use mainline. Otherwise, you should use the maintenance SDK branch.
I'm trying to install OpenESB on Windows 2000, but it always fails. Does OpenESB work on Windows 2000?
Windows 2000 has a rather severe limit on the maximum size of command lines and environment variables (about 2K). The rather lengthy classpath needed by the application server runs into this limit if you are not careful. See http://forum.java.sun.com/thread.jspa?threadID=647521&tstart=67 for a workaround. You should also keep directory pathnames used as short as possible.
. Copyright 1994-2009 Sun Microsystems, Inc.