Note: The content of this document is overlapping with Notes on Creating JBI Component using maven2 and Hello World - BC and Hello World - SE. Any changes you might want to do for this document might be relevant for them as well. Questions unanswered by this document may be answered by the other documents.
This document is a tutorial that describes the steps involved in the creation of a standard JBI Component using servicemix-common module.
We will write a full XSLT Service Engine.
First, we will use the servicemix-service-engine maven 2 archetype to create the basis of our JBI component.
Using the maven2 archetype
Run the following command (remove the trailing backshlashes and make it one line):
mvn archetype:create \ -DarchetypeGroupId=org.apache.servicemix.tooling \ -DarchetypeArtifactId=servicemix-service-engine \ -DarchetypeVersion=3.0-incubating \ -DgroupId=org.apache.servicemix.xslt \ -DartifactId=servicemix-xslt
The first three parameters identify the maven 2 archetype to use, while the last two parameters are used for the generated maven 2 project. The version information "3.0-incubating" may have to be changed; just look at any of ServiceMix' pom.xml for the version you are using.
While ServiceMix is in the incubator you have to specify the incubator repository in order to use the servicemix maven 2 archetypes, unless you did not include the repository in your local maven configuration.
-DremoteRepositories=http://people.apache.org/repo/m2-incubating-repository
This will create the following files:
servicemix-xslt\ pom.xml src\ main\ java\ org\ apache\ servicemix\ xslt\ MyBootstrap.java MyComponent.java MyDeployer.java MyEndpoint.java MyLifeCycle.java MySpringComponent.java test\ java\ org\ apache\ servicemix\ xslt\ MySpringComponentTest.java resources\ spring.xml
Testing the generated component
The default implementation of the component accepts InOut MEPs and return the input content as the out message.
To test it, just run
mvn test
You should see something like:
[INFO] Scanning for projects... [INFO] ---------------------------------------------------------------------------- [INFO] Building A custom project [INFO] task-segment: [test] [INFO] ---------------------------------------------------------------------------- [INFO] [xbean:mapping {execution: default}] [INFO] Generating META-INF properties file: c:\java\tmp\servicemix-xslt\target\xbea n\META-INF\services\org\apache\xbean\spring\http\org.apache.servicemix.xslt\1.0 for namespace: http://org.apache.servicemix.xslt/1.0 [INFO] Generating HTML documentation file: c:\java\tmp\servicemix-xslt\target\xbean \servicemix-xslt.xsd.html for namespace: http://org.apache.servicemix.xslt/1.0 [INFO] Generating XSD file: c:\java\tmp\servicemix-xslt\target\xbean\servicemix-xsl t.xsd for namespace: http://org.apache.servicemix.xslt/1.0 [INFO] ...done. [INFO] [2-jbi:generate-jbi-descriptor] [INFO] Generating jbi.xml [INFO] [resources:resources] [INFO] Using default encoding to copy filtered resources. [INFO] [compiler:compile] Compiling 6 source files to c:\java\tmp\servicemix-xslt\target\classes [INFO] [resources:testResources] [INFO] Using default encoding to copy filtered resources. [INFO] [compiler:testCompile] Compiling 1 source file to c:\java\tmp\servicemix-xslt\target\test-classes [INFO] [surefire:test] [INFO] Setting reports dir: c:\java\tmp\servicemix-xslt\target/surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- [surefire] Running org.apache.servicemix.xslt.MySpringComponentTest log4j:WARN No appenders could be found for logger (org.apache.xbean.spring.context. impl.XBeanXmlBeanDefinitionReader). log4j:WARN Please initialize the log4j system properly. <?xml version="1.0" encoding="UTF-8"?><hello>world</hello> [surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 1,422 sec [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 42 seconds [INFO] Finished at: Thu May 11 22:50:58 CEST 2006 [INFO] Final Memory: 8M/18M [INFO] ------------------------------------------------------------------------
Note: For problems with archetypes in Eclipse, see Importing ServiceMix into Eclipse#Projects with failing build in Eclipse workspace
Created by Guillaume Nodet
On Thu May 11 15:07:33 CEST 2006
Using TimTam