Sniffer consists of three main parts (Fig. 1) - the Interceptor, which purpose is to intercept and process messages sent through the ESB, the database used to log the messages, and a user interface module designed as a portlet pluggable into the ARUM administration web portal. The web portal, which is based on the Liferay technology, is deployed on the same JBoss application server as the Interceptor as well as the ESB.
Fig. 1: JBosss ESB sniffer architecture
The Interceptor leverages the service of the same name that is offered by the JBoss application server. Since ESB 4.11 there is a an interface designed for intercepting messages called PipelineInterceptor, which can be implemented and modified in order to work correctly with the target system. The designed Interceptor uses this interface and extends its functionality. There are four different interception points that have to be defined in a configuration file of the application server. These points represent the types of messages sent through the ESB that should be intercepted: failure, instantiate, start and end.
The Database is a standard MySQL database to which the following properties of each captured message are stored:
date and time the message was sent;
name of the sending service;
name of the receiving message queue (the messages are sent to queues from where they are picked up by the receivers);
content of the message;
other FIPA-related message attributes such as protocol, performative, conversation ID, etc. (see next section).
The Sniffer UI (see Fig. 2) is implemented as a portlet that runs within the ARUM administration dashboard. The dashboard leverages the web portal technology, which is a specially designed web page on which the information related to different sources is displayed within dedicated user interface components - the portlets. The ARUM administration dashboard provides the user with the means for administration of the overall ARUM solution. It means for example the deployment of services, monitoring their parameters and health, visualizing the message flow and statistics (via Sniffer), etc.
Fig. 2: Sniffer user interface - the table showing the list of exchanged
The Sniffer UI loads messages from the database and displays them in two different forms. The first form, which is depicted in 0, is a basic table displaying the captured messages and their details. The second one shown in Fig. 3 is a graphical view of the message flow in UML sequence diagram. Various filters can be applied when choosing what messages to be shown in both modes, such as messages sent only by selected services, messages sent within a specified time period, messages of certain performative, etc.
Fig. 3: Sniffer user interface - the graphical representation of the message flow