Extending JBoss AS 7

Introduction

This page describes the way to extend JBoss Application Server (AS) 7 to provide OpenESB features.

JBoss is providing documentation about how-to extends Jboss AS 7. This documentation is available at : https://docs.jboss.org/author/display/AS71/Extending+JBoss+AS+7

Before going deeper on the way to integrate OpenESB runtime to JBoss AS 7, please have a look to this very interesting document : https://community.jboss.org/wiki/ExtendingAS7

Architecture

An overview of the JBoss 7.x architecture is available at https://community.jboss.org/wiki/AS7InternalArchitectureOverview

Classloading Strategy

As it was done for Glassfish v2, we do not need any "bootstrapper" implementation since the JBoss subsystem can be used as it. So we can refactor the bootstrap module and the framework module to only one master module. Nevertheless, according to the specification and to other platform (ie. application server) implementations, we have to create four distinct class loader sets within the JBI framework: JBI public interfaces, JBI runtime implementation, Shared Libraries, and Components. There is a single class loader for the JBI public interfaces, another class loader for the JBI runtime implementation, and then one class loader for each installed Shared Library and Component. The idea is to provide access to the JBI public interfaces from each of the other class loader sets, while isolating the JBI runtime implementation from direct access by Shared Libraries and Components.

OpenESB integration : architecture design


Writing subsystem

Subsystem configuration

In a first time, we do not need to implement a complex configuration schema as there is no real external configuration and so the model structure shall be as simple as possible.

Question

(question) What can be a configuration element for OpenESB subsystem ?

  • JMX port is managed by the application server
  • Path to the jbi folder ?
  • Other ?

Application Server Lifecycle

Some tasks may be done when user is starting / stopping the application server.

Through the Service interface, we can retrieve when the module is started or stopped. Please read the documentation of this interface which provide us several informations about what we can do in a service implementation and what we can't.