Version 11

    Overview

     

    This document provides a high level view of the JBoss Messaging JMS Facade design.

     

    JBoss Messaging will be a fully compliant JMS 1.1 message provider. It is architected to work as a sum of two relatively independent layers:

    • The JBoss Messaging Core, a framework that can be used to create distributed and reliable message transport systems. JBoss Messaging Core doesn't have any dependencies on the JMS API. Its design is presented in the JBoss Messaging Core design document.

     

    • The JMS Facade, a collection of classes and configuration files that add a JMS 1.1 compliant facade to the Messaging Core. This layer takes care of simple JMS requirements and translates other requests into the more generic messaging API (the delegate interfaces). The JMS Facade makes possible for any JMS 1.1 client to connect to a JBoss Messaging server, send and receive messages and use any other facilities mandated by the JMS specifications. It is also possible to add different facades (SMTP, SOAP) in top of the Messaging Core, but this subject is outside the scope of this document.

     

    JMS API

     

    The JMS Facade layer provides implementation for the following JMS API elements:

     

     

    Delegates

     

    The delegates are interfaces that define a subset of the JMS API. They take the verbosity out of JMS and leave only strictly necessary method calls. The JMS Facade uses implementations of the delegates at two levels:

     

    Client side

     

    A set of dynamic proxies implement the delegate interfaces. For each proxy, the InvocationHandlers acts as container for the client-side interceptors.

     

    Server side

     

    Actual instances implement the delegate interfaces. These instances are factories for dependent proxies and also hold state on the behalf of clients.

     

    Interfaces

     

     

    Client-side Interceptors

     

     

     

     

     

     

     

     

     

    Remoting

     

    The last interceptor in the ConnectionFactoryDelegate proxy chain is

    org.jboss.aspects.remoting.InvokeRemoteInterceptor

    that delegates the invocation to JBoss Remoting.

     

    Colocated invocations

     

    In the case the client-side dynamic proxies are colocated with the server, remoting is no longer necessary, the invocation can be performed directly.

     

    Server-side Interceptors

     

     

     

    Managers

     

    These services are uded by the interceptors to perform the real work.

     

     

     

    Diagrams

     

     

    Referenced by: