A Tangled Web

http://blogs.sun.com/mwhite/date/20090115 Thursday January 15, 2009

Scheduler Binding Component

The new Scheduler Binding Component is in incubator status and is available for download. It works in both the OpenESB v2 and Fuji environments. For more information, check out these links to Ed Wong's blog:

For you Fuji fans, the Scheduler BC archetype is now integrated into Fuji and the Scheduler BC bundle can be downloaded from the Maven repository on dev.java.net. Note that you still need to download and install the Spring libraries referred to in Ed's blog entry on adding the Scheduler BC to a Fuji environment. Do this in whatever OSGi runtime you are using for your Fuji work.

For even more information, see the Scheduler BC wiki page.

http://blogs.sun.com/mwhite/date/20081126 Wednesday November 26, 2008

Fuji Milestone 3 is here!

Hot on the heels of the recently-released GlassFish ESB Release Candidate 1, we continue to move forward on Project Fuji, our exciting new OSGi-based technology which will form the foundation for the next-generation SOA integration platform, GlassFish ESB.next. This project has two sides: one is evolutionary, meaning Adapters (binding components) and Containers (service engines) from the current v2 offerings will run in Fuji, as will applications built using the v2 tooling. The other side is revolutionary, in that lots of innovation is happening in the area of productivity.

Milestone 3 of Project Fuji introduces a cool new lightweight web-based tooling option for composing applications.

From this page you can watch the Fuji Milestone 3 Screencast showing how a simple drag and drop browser interface is used to easily build the same demo that was built in Miletone 2. It is worth noting here that the browser interface creates the same IFL that was written in the IDE for Milestone 2, and that you can checkout the IFL created by the web-based tooling and import the project into your IDE if you wish.

All of this ties right into the goal of Fuji: productivity through flexibility, agility, and ease of use. Here's what this milestone provides in those areas:

  • Flexibilty: the tooling choices are expanded with the availability of a browser-based UI
  • Agility: there is the new "automatically save and deploy" option in the tooling, which is one step towards our goal of making it very easy to develop, test and correct your application as you go along
  • Ease of use: the web-based tooling provides simple visual modeling of enterprise integration patterns with simple properties dialogs to configure them

As always, we welcome feedback on Project Fuji!


http://blogs.sun.com/mwhite/date/20081115 Saturday November 15, 2008

Open ESB Logging

Extensive logging capabilities are available in Open ESB v2 to help diagnose runtime problems and to help a component developer diagnose problems within a component. This discussion describes what logging facilities are available in the JBI runtime and how to control the levels of the various loggers. For a detailed look at the logging support for JBI components, please see my blog entry here.



JBI Runtime Logging


The JBI runtime has separately controllable loggers for its various sub-components to allow diagnosis at a fine-grained level without generating excessive amounts of logging output. There is also a top-level logger, com.sun.jbi, which is the parent of all of the sub-component loggers. The first time the runtime is initialized, the top-level logger defaults to a level of INFO, and all sub-component loggers have their levels set to null so that they inherit their levels from the top-level logger. Any logger levels that are set thereafter are always persisted so that they are restored after a restart of the runtime. There is a special logger level, DEFAULT, recognized by the runtime, that resets a logger level to null so that it reverts to inheriting its level from its parent logger. This is supported by the admin console, asadmin, and asant.


Here is a list of the main runtime loggers:



  • com.sun.jbi - the top-level logger for the entire runtime

  • com.sun.jbi.framework - core runtime, includes the startup and shutdown processing, all interactions directly with the JBI SPIs implemented by installed Binding Components and Service Engines, and all class loading management in the runtime

  • com.sun.jbi.management - all management processing

  • com.sun.jbi.management.AdminService - the administrative service responsible for bootstrapping the management system for all other system services, starting and stopping the the rmanagement services, and providing information that remote clients use to access system services and components

  • com.sun.jbi.management.ConfigurationService - the configuration service which provides configuration support for the runtime and for all Binding Components and Service Engines

  • com.sun.jbi.management.DeploymentService - the deployment service which provides support for deployment of Service Assemblies into the runtime

  • com.sun.jbi.management.InstallationService - the installation service which provides support for installation of Binding Components, Service Engines, and Shared Libraries

  • com.sun.jbi.management.LoggingService - the logging service which provides a lookup mechanism for logger MBeans

  • com.sun.jbi.messaging - the Normalized Message Router where all message exchange processing is performed


Controlling Runtime Loggers


Every runtime logger has a logger MBean which provides all of the operations necessary to manage the logger level. The administrative clients use these MBeans to perform all logger level setting. Here are examples showing how to manage runtime logger levels using asadmin. The following command is used to list the levels of all of the runtime loggers:


open1[66]% asadmin show-jbi-runtime-loggers
com.sun.jbi = INFO
com.sun.jbi.framework = INFO
com.sun.jbi.management = INFO
com.sun.jbi.management.AdminService = INFO
com.sun.jbi.management.ConfigurationService = INFO
com.sun.jbi.management.DeploymentService = INFO
com.sun.jbi.management.InstallationService = INFO
com.sun.jbi.management.LoggingService = INFO
com.sun.jbi.messaging = INFO
Command show-jbi-runtime-loggers executed successfully.


Suppose you want to change the the framework logger level to WARNING. The following command will do that:


open1[67]% asadmin set-jbi-runtime-logger "com.sun.jbi.framework=WARNING"
Command set-jbi-runtime-logger executed successfully.


Listing the loggers again you can see the framework logger level has changed:


open1[68]% asadmin show-jbi-runtime-loggers
com.sun.jbi = INFO
com.sun.jbi.framework = WARNING
com.sun.jbi.management = INFO
com.sun.jbi.management.AdminService = INFO
com.sun.jbi.management.ConfigurationService = INFO
com.sun.jbi.management.DeploymentService = INFO
com.sun.jbi.management.InstallationService = INFO
com.sun.jbi.management.LoggingService = INFO
com.sun.jbi.messaging = INFO
Command show-jbi-runtime-loggers executed successfully.


Now let's see how the logger level inheritance works. The following command will set the top-level logger level to FINE:


open1[69]% asadmin set-jbi-runtime-logger "com.sun.jbi=FINE"
Command set-jbi-runtime-logger executed successfully.


Note that the framework logger level has already been explicitly set, but all other loggers are still inheriting from the top-level logger:


open1[70]% asadmin show-jbi-runtime-loggers
com.sun.jbi = FINE
com.sun.jbi.framework = WARNING
com.sun.jbi.management = FINE
com.sun.jbi.management.AdminService = FINE
com.sun.jbi.management.ConfigurationService = FINE
com.sun.jbi.management.DeploymentService = FINE
com.sun.jbi.management.InstallationService = FINE
com.sun.jbi.management.LoggingService = FINE
com.sun.jbi.messaging = FINE
Command show-jbi-runtime-loggers executed successfully.


Suppose you want to change the framework logger to once again inherit its level from the top-level logger. Simply set its logger level back to DEFAULT:


open1[71]% asadmin set-jbi-runtime-logger "com.sun.jbi.framework=DEFAULT"
Command set-jbi-runtime-logger executed successfully.


Now the framework logger level is inheriting the last level set on its parent, the top-level runtime logger:


open1[72]% asadmin show-jbi-runtime-loggers
com.sun.jbi = FINE
com.sun.jbi.framework = FINE
com.sun.jbi.management = FINE
com.sun.jbi.management.AdminService = FINE
com.sun.jbi.management.ConfigurationService = FINE
com.sun.jbi.management.DeploymentService = FINE
com.sun.jbi.management.InstallationService = FINE
com.sun.jbi.management.LoggingService = FINE
com.sun.jbi.messaging = FINE
Command show-jbi-runtime-loggers executed successfully.


Now here's an example using the GlassFish admin console. The screen shots are of only the frame that is relevant, not the entire browser window, just to cut down on the size. This is the display of the runtime loggers and their levels:


Admin Console JBI runtime logger screen


Clicking on the drop-down list of logger levels for the Framework logger gives this:


Logger level drop-down list


Clicking on the FINE level in the drop-down results in this output. However, the actual logger level is not changed until the Save button is clicked:


Framework logger level to be set


After clicking on the Save button, the Framework logger level is changed:


Framework logger level updated

GlassFish ESB Release Candidate 1 available for download

We've reached a major milestone in our work on GlassFish ESB. The first release candidate, RC1, is now available for download.

RC1 includes a lot of improvements and bug fixes compared with Milestone 2. A list of these improvements will be posted shortly in the release notes.

Unless major issues are found in this release candidate, the next drop will be the GA release itself. This is planned for December 5.

A word of thanks to everyone involved, including those who downloaded Milestone 2 and provided feedback. Please download RC1, and see if issues that you may have reported earlier indeed have been fixed. If there are new issues, please indicate if you think if they are show stoppers for the GA release. Feedback can be posted on the users mailing list.

http://blogs.sun.com/mwhite/date/20081023 Thursday October 23, 2008

Fuji Milestone 2 is here!

Project Fuji is our exciting new OSGi-based technology which will form the foundation for the next-generation SOA integration platform, OpenESB v3. In Fuji Milestone 1, which we unveiled at JavaOne 2008, a simple yet powerful way to define services and link them together was introduced, including the option for web-based tooling.  The demo we built for Milestone 1 was based on technologies like RSS and XMPP. As cool as this was, it left some people wondering how this would apply to more classic integration scenarios.

Well now it's time for Fuji Milestone 2, and we have chosen a classic integration scenario to demonstrate how easily and quickly it can be solved using the powerful but simple to use capabilities of Fuji. On the  Fuji Milestone 2 page,  you will find a summary of all the slick new features, including:

  • support for additional Enterprise Integration Patterns
  • enhanced interceptor support
  • lots of new NetBeans tooling features
  • new support for distributed JBI
  • a reactive runtime which automatically refreshes updated applications
  • new service types (database, FTP, SMTP, HL7)
  • IFL enhancements

From this page you can also watch a screencast of the demo in action, download the Milestone 2 distribution, and get a complete picture of the demo application, including step-by-step instructions for creating and running the demo yourself.

Also have a look at Andi's entry on Fuji Milestone 2, which includes further background info, and for you IFL fans, check out Chikkala's entry on the new IFL editor features.

And, as always, we welcome feedback on Project Fuji!

http://blogs.sun.com/mwhite/date/20081008 Wednesday October 08, 2008

GlassFish ESB Milestone 2 available for download

Good news! GlassFish ESB Milestone 2 is now available for download.

Milestone 2 includes a lot of improvements and bug fixes compared with Milestone 1. A list of improvements can be found in the release notes.

The next milestone will be the release candidate, and should be available in four weeks.

Please download Milestone 2, give it a spin, and please, please provide feedback! Issues found in this phase of the release can be solved easily. After the release, it will be a more difficult to get changes into the download. Feedback can be posted on the users mailing list.

http://blogs.sun.com/mwhite/date/20080915 Monday September 15, 2008

Commercial Support for OpenESB: GlassFish ESB

Big  news in the OpenESB world was announced today. Sun has finally announced a commercially-supported version of OpenESB in the form of GlassFish ESB. This is a binary distribution of OpenESB, consisting of a subset of the components in OpenESB. There has been strong demand for a fully-supported version of OpenESB for some time now, so this is very exciting news!

Check out the updated web site! There’s a lot of new content, including an introductory video and a guided tour of all the features in GlassFish ESB.

Sun will support GlassFish ESB just like any other product, meaning it will not support just the latest version, but also older versions, just as we currently do with CAPS, supporting CAPS 5.0.5, 5.1.3, and 6.0.

GlassFish ESB will be released on December 5th. There is a free milestone build available for download, and there will be two more milestone builds before the release date. You can download the milestone build now to begin exploring the features. Just go to the updated web site and follow the download link. Note that the GlassFish ESB downloads will remain on the OpenESB site because the code base is there, all in open source.

Here is a list of the components that are included in GlassFish ESB:

There will be additional separate component releases next to GlassFish ESB. For example, IEP will be released soon as a separate component. Such components can be used with GlassFish ESB.

This new product does not change anything for the ESB Suite, MDM, and CAPS products; they will continue to be developed and improved. There is a value differentiation between GlassFish ESB and the other products, and consequently also a price differentiation.



http://blogs.sun.com/mwhite/date/20080910 Wednesday September 10, 2008

Project Keychain: SPML Gateway for User Provisioning

A new SPML v2.0 and JBI compliant Gateway (Project Keychain) is now at Technology Preview Release Stage 1 and is available for download. Check it out here, where you will find details on how to install and use it. This SPML Gateway uses Open ESB and  its components to allow management of user access provisioning to multiple types of external systems such as LDAP, SalesForce.com and RACF. It provides these features using standard JBI components available in Open ESB, without the need to do additional programming. More solutions for additional external systems are being developed. Join Project Keychain and become part of the growing community of solution developers!

http://blogs.sun.com/mwhite/date/20080909 Tuesday September 09, 2008

OpenESB partners with ComplexEvents.com

We have joined ComplexEvents.com as a partner. This site is hosted by Professor David Luckham from Stanford University - considered by some to be the father of modern Complex Event Processing (CEP). You can find us in the Partner section on the site and also soon in the Event Processing Blogs section in the lower right of the main page. Check out the OpenESB Partner page.

ComplexEvents.com is a site dedicated to Complex Event Processing applications, products, research, and latest developments. This site contains many articles written by numerous well-known CEP authorities.

Database BC to replace SQL SE and JDBC BC

Introducing the new Database BC
A new Open ESB component, the Database BC, will soon replace two existing components, the SQL SE and the JDBC BC. Until now, database access in Open ESB was accomplished through the use of both the SQL SE and the JDBC BC. The JDBC BC was used for simple select and insert operations on database tables. The SQL SE was used for more advanced database  manipulations through the SQL language.

Why make this change?
Through various user feedback, it became evident that having two different database access components confused many users. In order to alleviate the confusion, we decided to combine the features of both into a new Database BC. Both the SQL SE and the JDBC BC will be deprecated in November  2008.

What are some of the features in the Database BC?
The Database BC will have all the features of both the JDBC BC and the SQL SE. The full feature list will be published to the Database BC Wiki Page.

What about existing applications using SQL SE and JDBC BC?
We will be introducing a procedure to convert existing SQL SE projects to the new Database BC. This procedure will be a well-defined set of steps to migrate SQL SE artifacts to Database BC artifacts. The JDBC BC artifacts are functionally equivalent, so any projects using WSDL with JDBC  extensions will work without any changes.

When will the Database BC be available?
A community version of the Database BC is available now from Project Open ESB. It will be officially released as part of GlassFish ESB in November 2008 and made available to customers of CAPS R6, ESB Suite R6 and MDM Suite R6 at the same time.

How is the Database BC packaged?
The runtime component is available as sun-database-binding.  The design-time components still use the org-netbeans-modules-wsdlextensions-jdbc.nbm and org-netbeans-modules-sql-wizard.nbm NetBeans modules to create artifacts for the Database BC. Artifacts generated by the new versions of these design-time components will now be deployed to the Database BC instead of the JDBC BC or the SQL SE.

http://blogs.sun.com/mwhite/date/20080814 Thursday August 14, 2008

Event-Driven Architectures in Open ESB

Most people associate Open ESB with enabling Service Oriented Architecture (SOA). While this is true, what many folks do not know is that Open ESB also enables Event- Driven Architecture (EDA). The Intelligent Event Processor, or IEP Service Engine, is the component that provides this support. The IEP SE is an open source Complex Event Processing (CEP) and Event Stream Processing (ESP) engine that is part of the large set of components available in Open ESB. You can check it out here. For more information on how EDA, CEP, and ESP are related to an ESB, see this blog entry by Prashant Bhagat.

http://blogs.sun.com/mwhite/date/20080807 Thursday August 07, 2008

Apache Camel Service Engine

A new service engine that supports Apache Camel applications is now in incubator status and is available for download. This SE supports running Camel applications and also allows Camel applications using Camel endpoints to exchange messages with service providers and consumers deployed to other JBI components. Check it out here where you will find links for downloading it, videos on how to install it and how to use it, links to examples and source code, and instructions on how to build it from the source.

http://blogs.sun.com/mwhite/date/20080709 Wednesday July 09, 2008

Adding new platform support

In light of a couple of recent requests about supporting Open ESB on the WebLogic application server I thought it would be nice to provide some background information on how we have implemented support for various platforms in Open ESB. Last year I wrote a blog entry about our platform support:

http://blogs.sun.com/mwhite/entry/application_server_platform_independence_in

There are some wiki pages for the ports that have been done to other platforms:

http://wiki.open-esb.java.net/Wiki.jsp?page=OpenESBJavaSE

http://wiki.open-esb.java.net/Wiki.jsp?page=OpenESBJBoss

http://wiki.open-esb.java.net/Wiki.jsp?page=OpenESBWebSphere

Now here is some information about the organization of the actual source code. I've used links to the FishEye view of the source files and directories here.

There is an enumerator of platforms (called JBI providers in the code) here:

runtime/base/src/com/sun/jbi/JBIProvider.java

Here is where we keep the interfaces that we provide for platform support:

runtime/base/src/com/sun/jbi/platform

In this directory, PlatformContext.java is the interface that is implemented for each platform. PlatformEventListener.java file is an optional interface that  can provide event support for things like creation of a new instance, creation of a cluster, etc. This is currently used only in the GlassFish implementation.

This is the basic setup / life cycle class for the JBI runtime:

runtime/framework/src/com/sun/jbi/framework/JBIFramework.java

Look in the following directories to see the various platform support code:

GlassFish:  runtime/framework/src/com/sun/jbi/framework/sun

JBoss:  runtime/framework/src/com/sun/jbi/framework/jboss

WebSphere:  runtime/framework/src/com/sun/jbi/framework/websphere

Java SE:  runtime/framework/src/com/sun/jbi/framework/jse

In each of the above directories, there is an implementation of PlatformContext and a subclass of the JBIFramework class, along with any other classes that are
specific to a particular platform.  Also, there is a JBIBootstrap class in each of these directories, which sets up the required class loader hierarchy.

For creating the actual artifacts that comprise the support for a platform, there are Maven poms  for each platform here:

esb-packages/jbise-package

esb-packages/jboss-package

esb-packages/websphere-package

Note that for GlassFish there is not a separate directory here as that is our primary platform.

From some minimal research I did on WebLogic a some time ago, it appeared that WebLogic had a concept of a life cycle module, similar to what GlassFish has. If that is still the case it is probably the most straightforward way to implement an Open ESB environment for WebLogic. JBoss uses a similar approach, with the concept of a life cycle module. However, rather than the life cycle module implementing an interface that is invoked by Java method calls, the life cycle is provided by implementing an MBean interface that has the life cycle operations. For this the JBIFramework class is wrapped inside the MBean that provides the life cycle. In WebSphere, there was no life cycle module support so the Open ESB runtime is wrapped in a servlet - a little funky, but it works.

http://blogs.sun.com/mwhite/date/20080425 Friday April 25, 2008

Sessions of interest at JavaOne 2008

For JavaOne 2008, there is a lot of activity planned in the SOA and Enterprise Integration space. There are 7 technical sessions, 4 hands-on labs, and 4 BOFs planned.  One of the hands-on labs is a "Bring Your Own Laptop" (BYOL) session where you will to build and run the lab exercise on your own laptop.

You can find information about all of the sessions, labs, and BOFs here

Of particular interest to me is TS-6385, "Integration Profile for GlassFishTM Project v3". This will introduce the leading-edge work we're doing in the area of providing a robust but lightweight SOA platform  using GlassFish v3 and JBI technologies.

Be sure to stop by our table at CommunityOne day on Monday May 5. We will have two demo stations going, one for Project Mural and one for Project Open ESB

Throughout the rest of the conference, you can come by our pavilion pods, Java CAPS (pod 170), Open ESB (pod 171),  Event Driven SOA (pod 179), and Project Mural (pod 180). We would love to chat with you about how our technology could help you.

http://blogs.sun.com/mwhite/date/20071121 Wednesday November 21, 2007

JBoss support in Open ESB

Thanks to the work of a number of people at both Sun and Gestalt LLC, there is now a working JBoss version of Open ESB available for download from our nightly builds. Just go to our Downloads page, and click on the "Latest Nightly Build" link under "Open ESB Runtime". The download page will list both a .zip and a .tar version of the bundle for running under JBoss.

Chad Gallemore (Gestalt LLC) and I have created pages on our wiki describing the Open ESB for JBoss work, providing instructions on how to install and run it, and documenting future work that is planned for Open ESB for JBoss. You can start with the OpenESBJBoss page and learn all about it.