...
To summarize, the application is listening for incidents coming from web service or files. According to the origin, the content (= incidents) are transformed into their corresponding objects using for the CSV file, a new camel component : camel-bindy and for the Web Service camel-cxf component. Each message transformed is placed in a queue handled by ActiveMQ engine. All the messages (containing the objects) are next processed by a Bean service who will (with the help of injection of dependency provided by Spring) save the incidents in a DB using Spring and Hibernate frameworks.
A small Apache Wicket web application running in Jetty Web server provide to the users an screen to consult the incidents created.
Remark : A bundle in the OSGI world represents component made by developer. For more info about OSGI, I recommend to have a look on OSGI web site
The project has been cut into the following maven projects components :
Maven project name | Description | Is it a bundle ? |
---|---|---|
reportincident.activemq | configuration file of the ActiveMQ engine | yes |
eportincident.camelqueueservice | configuration file of the camel-activemq component | yes |
reportincident.db | generator of the script DB | no |
reportincident.features | features provisioning file containing our bundles dependencies | no |
reportincident.model | model layer | yes |
reportincident.persistence | hibernate persistence layer; bundle | yes |
reportincident.routing | camel routing | yes |
reportincident.service | spring service layer | yes |
reportincident.web | apache wicket module | yes |
reportincident.webservice | CXF web service generator | yes |
...
As you can see, some are considered as OSGI bundles and others no. An important point to mention here concerns the granularity : each layer of our application will be deployed as separate bundles. This will facilitate the maintenance and release management. You can argue that the granularity is too small. SOA is not an exact science and depending of the size of the application, the team in charge to develop, release management procedure this cutting will be redefined. There are no rules of thumb except that the project must be manageable and mainte
Prerequisites
This tutorial uses:
...