What is a Gazelle Web application
A Gazelle Web application is physically an EAR (Enterprise ARchive). This EAR will be deployed in an application server (JBoss AS, more informations here).
During the deployment, the application server will either create a database corresponding to a database or will just map the application with an existing database (this is just a configuration). One application access to only one database.
One Gazelle application (EAR) is composed of several modules.
- Some EJB modules (one module is represented as a JAR archive inside the EAR archive), containing our EJB3, Business layer
- A persistence layer (represented as one JAR archive inside the EAR archive, this is a requirement), this is the mapping with database for all modules.
- One or several User Interface (UI) modules (one module is represented as a WAR archive inside the EAR archive), containing JSF webpages used by the application.
Actually, it exists several Gazelle friendly applications :
- Gazelle (TestManagement)
- ProductRegistry (Provide and register all products informations)
- InriaHL7EVS
- InriaHL7MessageProfileRepository
- DemographicDataServer
Some modules are used by several applications. For instance, modules Users-ejb, TF-ejb, and Systems-ejb are used by Gazelle and ProductRegistry.
Example of architectures
The Gazelle application
This application uses the following modules :
Modules | Shared with other applications? | Description | Forge location | Notes |
Common-ejb | Definitely yes | Includes common libraries (eg. Audit, Authentication), provided to others modules, and applications. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
Gazelle-ejb | No | This module contains all codes used only by the ProductRegistry application (IntegrationStatement, etc...). Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Gazelle | This module contains all EJB3 specific to Gazelle (and not used by other applications, as Product Registry for instance). |
Gazelle-ear | No | This module will build our application using others modules (listed in this tab). This application will be represent as a EAR file, generated by this module. | :/svn/gazelle/Gazelle | None |
Gazelle-ui | No | Web part of our application. It generates a WAR file ready to be loaded in our application. | :/svn/gazelle/Gazelle | None |
Gazelle-persistence | No | This module corresponds to our persistence layer. It's used by all modules. This helps our projects to represent them as one application, using one database. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Gazelle | None |
Systems-ejb | Yes | This module contains all codes managing Gazelle systems. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
TF-ejb | Yes | This module contains all codes from the Technical Framework. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
Users-ejb | Yes | This module contains all codes managing Gazelle users. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
Here is below a slide showing the Gazelle application architecture :
In this slide, green modules are used by other applications, the other modules are specific to the Gazelle application.
A Gazelle friendly Web application : Product Registry
This application uses the following modules :
Modules | Shared with other applications? | Description | Forge location | Notes |
Common-ejb | Definitely yes | Includes common libraries (eg. Audit, Authentication), provided to others modules, and applications. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
ProductRegistry-ejb | No | This module contains all codes used only by the ProductRegistry application (IntegrationStatement, etc...). Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/ProductRegistry | This module contains all EJB3 specific to Product Registry (and not used by other applications, as Gazelle). For instance, Product Registry uses Integrations Statements. An Integration Statement is a kind of system with some associated actors, integration profiles. So, some classes of this modules extend the Systems-ejb modules' classes. The goal of this ProductRegistry-ejb module is to don't modify the Systems-ejb module just for the Product Registry. The Systems-ejb module doesn't fit to the ProductRegistry, but the ProductRegistry fits to the System-ejb module, because the Systems-ejb module is used by Gazelle. |
ProductRegistry-ear | No | This module will build our application using others modules (listed in this tab). This application will be represent as a EAR file, generated by this module. | :/svn/gazelle/ProductRegistry | None |
ProductRegistry-ui | No | Web part of our application. It generates a WAR file ready to be loaded in our application. | :/svn/gazelle/ProductRegistry | None |
ProductRegistry-persistence | No | This module corresponds to our persistence layer. It's used by all modules. This helps our projects to represent them as one application, using one database. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/ProductRegistry | None |
Systems-ejb | Yes | This module contains all codes managing Gazelle systems. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
TF-ejb | Yes | This module contains all codes from the Technical Framework. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
Users-ejb | Yes | This module contains all codes managing Gazelle users. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
Here is below a slide showing the Product Registry application architecture :
In this slide, green modules are used by other applications, the other modules are specific to the Product Registry application.
A Gazelle friendly Web application : DemographicDataServer
This application uses the following modules :
Modules | Shared with other applications? | Description | Forge location | Notes |
Common-ejb | Definitely yes | Includes common libraries (eg. Audit, Authentication), provided to others modules, and applications. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
Common-ui | Definitely yes | Includes common pages (JSF, XHTML), provided to others modules, and applications. Those pages will be included in a WAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
DemographicDataServer-ejb | No | This module contains all codes used only by the DemographicDataServer application. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/DemographicDataServer | This module contains all EJB3 specific to DemographicDataServer (and not used by other applications, as Gazelle/PR). For instance, DemographicDataServer uses Patients and Adresses, not used by others applications. |
DemographicDataServer-ear | No | This module will build our application using others modules (listed in this tab). This application will be represent as a EAR file, generated by this module. | :/svn/gazelle/DemographicDataServer | None |
DemographicDataServer-ui | No | Web part of our application. It generates a WAR file ready to be loaded in our application. | :/svn/gazelle/DemographicDataServer | None |
DemographicDataServer-persistence | No | This module corresponds to our persistence layer. It's used by all modules. This helps our projects to represent them as one application, using one database. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/DemographicDataServer | None |
Users-ejb | Yes | This module contains all codes managing Gazelle users. Generate a JAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
Users-ui | Yes | Includes common pages for Users (JSF, XHTML), provided to others modules, and applications. Those pages will be included in a WAR file ready to be loaded in our application. | :/svn/gazelle/Modules | None |
Here is below a slide showing the DemographicDataServer application architecture :
In this slide, green modules are used by other applications, the other modules are specific to the DemographicDataServer application.
A small example of Gazelle application : SampleGazelle
This application uses some small examples modules, they are not used by other applications, but they exist as a reference for our development, to learn how to develop.
The architecture of this example is the same as Gazelle architecture, but light.
Here is below a slide showing this architecture :
Back to the Gazelle Developers Guide homepage.