Version 25

    Current model



    This current model is applied to:


    • Connection

    • Session

    • Browser

    • Consumer

    • Producer


    Where we aways have JMSFacade -> Delegates -> ServerEndpoints. This pattern requires at least 6 entities for each JMS component.


    Our current delegates is sort of disconnected and complicated (complicated != complex) because of the unnecessary Aspect.


    On the server side, we aways have Advised classes to play the AOP side.


    Goals on this refactoring


    • Simplify code & make it easier to understand

    • Use traditional OO modeling


    Proposed Model


    As discussed on Forums


    JMS           Agnostic         MINA
    ---           --------         ----
                                   IoConnector  IoAcceptor
                                       \            /
                                        \ IoSession/
        |                |
        |                |
      Session          Session
       / \                \
    Producer Consumer     Consumer


    • The current client delegate model will become the agnostic implementation.

    • Interception

      • The current interception we currently need (Failover for instance) will be placed inside the RemoteComponent that is encapsulating IO (encapsulation of MINA)


    Proposed Diagram




    Refactoring Roadmap

    I - Remove Aspects

    II - Place interceptors as valves on MINA components (Failover)




    Update on this document: Server and Clients don't share a common interface any more. The client is bound to the Server through our new transport layer. Each packet will be responsible to find the appropriate call on the server side.