...
Maven project name | Description | Is it a bundle ? |
---|---|---|
reportincident.activemq | configuration file of the ActiveMQ engine | yes |
eportincident reportincident.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. Of course, 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. You can imagine that the parameters used to configure Hibernate and Spring are bundles together instead inside the persistence. Service bundle could be split into several bundles; one by service type, ... There are no rules of thumb except that the project must be manageable and maintainable.
...
Step 1 : Initial Project Setup
...
First, we will create the 10 eclipse (defined in the table) using the maven archetype 'spring-osgi-bundle-archetype'.
To create the simple service project, execute the following command in your Unix/Dos console.
mvn archetype:create -DarchetypeGroupId=org.springframework.osgi -DarchetypeArtifactId=spring-osgi-bundle-archetype -DarchetypeVersion=1.2.0-m2
-DgroupId=demo -DartifactId=demo.service-bundle -Dversion=0.1
Remarks:
- The archetype version depends on the version of Spring Dynamic Module used and must be adapted in consequence,
- According to your project, you can change the artifactId to point to com.mycompany.application.service, and groupId com.mycompany.application
Step 2 : Develop the interface
...