Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
html
html
<html>
<head>
	<title>Report Incident HomePage</title>
	<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
	<strong>Report Incident HomePage</strong>
	<br/>
	<p/>
	<span wicket:id="message">message will be here</span> (1)
	<p/>
	
	<table cellspacing="0" class="dataview">
    	<tr>
        	<th>Id</th>
        	<th>Incident Date</th>
        	<th>Incident Ref</th>
        	<th>First Name</th>
        	<th>Last Name</th>
        	<th>Summary</th>
        	<th>Details</th>
        	<th>Email</th>
        	<th>Phone</th>
        	<th>Origin</th>
        	<th>Creation date</th>
    	</tr>
    	<tr>
        	<td><span wicket:id="incidentId">[incidentId]</span></td> {color:red} ((2)
        	<td><span wicket:id="incidentDate">[incidentDate]</span></td>
        	<td><span wicket:id="incidentRef">[incidentRef]</span></td>
        	<td><span wicket:id="givenName">[givenName]</span> </td>
       	 	<td><span wicket:id="familyName">[familyName]</span></td>
        	<td><span wicket:id="summary">[summary]</span></td>
        	<td><span wicket:id="details">[details]</span></td>
        	<td><span wicket:id="email">[email]</span></td>
        	<td><span wicket:id="phone">[phone]</span></td>
        	<td><span wicket:id="creationUser">[creationUser]</span></td>
        	<td><span wicket:id="creationDate">[creationDate]</span></td>
    	</tr>
	</table>

</body>
</html>

...

Code Block
package org.apache.camel.example.reportincident;

import java.util.Iterator;
import org.apache.camel.example.reportincident.model.Incident;
import org.apache.camel.example.reportincident.service.IncidentService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.IDataProvider;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;

/**
 * Homepage
 */
public class HomePage extends WebPage {

	private static final long serialVersionUID = 1L;

	private static final transient Log LOG = LogFactory.getLog(HomePage.class);

	@SpringBean (1)
	private IncidentService incidentService;

	/**
	 * Constructor that is invoked when page is invoked without a session.
	 * 
	 * @param parameters
	 *            Page parameters
	 */
	public HomePage(final PageParameters parameters) {

		LOG.debug("Spring service : " + incidentService.toString());

		// Add the simplest type of label
		add(new Label("message", "List of incidents coming from web services or file : ")); {color:red}(2)){color}

		DataView dataView = new DataView("pageable", new IncidentProvider()) { (3)

			@Override
			protected void populateItem(final Item item) { (5) 
				Incident incident = (Incident) item.getModelObject();
				item.add(new Label("incidentId", String.valueOf(incident
						.getIncidentId())));
				item.add(new Label("incidentDate", String.valueOf(incident
						.getIncidentDate())));
				item.add(new Label("incidentRef", incident.getIncidentRef()));
				item.add(new Label("givenName", incident.getGivenName()));
				item.add(new Label("familyName", incident.getFamilyName()));
				item.add(new Label("summary", incident.getSummary()));
				item.add(new Label("details", incident.getDetails()));
				item.add(new Label("email", incident.getEmail()));
				item.add(new Label("phone", incident.getPhone()));
				item.add(new Label("creationUser", incident.getCreationUser()));
				item.add(new Label("creationDate", String.valueOf(incident
						.getCreationDate())));

				item.add(new AttributeModifier("class", true,
						new AbstractReadOnlyModel() {
							@Override
							public Object getObject() {
								return (item.getIndex() % 2 == 1) ? "even"
										: "odd";
							}
						}));
			}
		};
		
        add(dataView);


	}

	private class IncidentProvider implements IDataProvider { (4)

		public Iterator iterator(int first, int count) {
			return incidentService.findIncident().iterator();
		}

		public int size() {
			return incidentService.findIncident().size();
		}

		public IModel model(Object object) {
			return new Model((Incident) object);
		}

		public void detach() {
			// TODO Auto-generated method stub

		}
	}

	private class IncidentDetachModel extends LoadableDetachableModel {

		private long id;

		@Override
		protected Object load() {
			return incidentService.findIncident(String.valueOf(id));
		}

		/**
		 * @param c
		 */
		public IncidentDetachModel(Incident i) {
			this(i.getIncidentId());
		}

		public IncidentDetachModel(long id) {

			if (id == 0) {
				throw new IllegalArgumentException();
			}
			this.id = id;
		}

	}

}

...

Code Block
package org.apache.camel.example.reportincident;

import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.spring.injection.annot.SpringComponentInjector;

/**
 * Application object for your web application. If you want to run this application without deploying, run the Start class.
 * 
 * @see org.apache.wicket.example.Start#main(String[])
 */
public class WicketApplication extends WebApplication
{    
	
	/**
	 * Init
	 */
    public void init() {
        super.init();
        addComponentInstantiationListener(new SpringComponentInjector(this)); {color:red}(2)){color}
    }

	
    /**
     * Constructor
     */
	public WicketApplication()
	{
	}
	
	/**
	 * @see org.apache.wicket.Application#getHomePage()
	 */
	public Class<HomePage> getHomePage() (1)
	{
		return HomePage.class;
	}

}

...

Code Block
xml
xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
	version="2.4">

	<display-name>reportincident.web</display-name>

	<context-param>
		<param-name>contextClass</param-name>
		<param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value> {color:red}(2){color}
	</context-param>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> (1) 
	</listener>

	<filter>
		<filter-name>camel.example.reportincident.web</filter-name>
		<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
		<init-param>
		    <param-name>applicationClassName</param-name>
		    <param-value>org.apache.camel.example.reportincident.WicketApplication</param-value>
		    <param-name>applicationFactoryClassName</param-name>
		    <param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value> (1)
    	</init-param>
	</filter>
	<filter-mapping>
		<filter-name>camel.example.reportincident.web</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


</web-app>

...

Code Block
xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.apache.camel.example</groupId>
	<artifactId>reportincident.web</artifactId>
	<packaging>war</packaging> (1)
	<version>1.0-SNAPSHOT</version>
	<name>Report Incident Web Bundle</name>

	<properties>
		<wicket.version>1.3.5</wicket.version>
		<jetty.version>6.1.4</jetty.version>
		<felix-version>1.4.3</felix-version>
		<spring-version>2.5.6</spring-version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.apache.camel.example</groupId>
			<artifactId>reportincident.service</artifactId>
			<version>1.0-SNAPSHOT</version>
			<scope>provided</scope>
		</dependency>
		
		<!-- SPRING DEPENDENCIES -->
	    <dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring-version}</version>
			<scope>provided</scope>
		</dependency>
	    <dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${spring-version}</version>
			<scope>provided</scope>
		</dependency>
		<!-- 
	    <dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring-version}</version>
			<scope>provided</scope>
		</dependency>
		 -->
		<!--  WICKET DEPENDENCIES -->
		<dependency>
			<groupId>org.apache.wicket</groupId>
			<artifactId>wicket</artifactId>
			<version>${wicket.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.wicket</groupId>
			<artifactId>wicket-spring-annot</artifactId>
			<version>${wicket.version}</version>
			<scope>provided</scope>
		</dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
			<artifactId>wicket-extensions</artifactId>
			<version>${wicket.version}</version>
			<scope>provided</scope>
		</dependency>

		<!-- LOGGING DEPENDENCIES - LOG4J -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.4.2</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.14</version>
			<scope>test</scope>
		</dependency>

		<!--  JUNIT DEPENDENCY FOR TESTING -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.2</version>
			<scope>test</scope>
		</dependency>

		<!--  JETTY DEPENDENCIES FOR TESTING  -->
		<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty</artifactId>
			<version>${jetty.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty-util</artifactId>
			<version>${jetty.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty-management</artifactId>
			<version>${jetty.version}</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>
	<build>
		<resources>
			<resource>
				<filtering>false</filtering>
				<directory>src/main/resources</directory>
			</resource>
			<resource>
				<filtering>false</filtering>
				<directory>src/main/java</directory>
				<includes>
					<include>**</include>
				</includes>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>
		<testResources>
			<testResource>
				<filtering>false</filtering>
				<directory>src/test/java</directory>
				<includes>
					<include>**</include>
				</includes>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</testResource>
		</testResources>
		<plugins>

			<plugin>
				<inherited>true</inherited>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.5</source>
					<target>1.5</target>
					<optimise>true</optimise>
					<debug>true</debug>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>maven-jetty-plugin</artifactId>
			</plugin>


			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1-alpha-2</version>
				<configuration>
					<archive>
						<!-- add the generated manifest to the war --> {color:red}(2){color}
						<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
					</archive>
					<!-- 
					<webResources>
						<resource>
							<directory>src/main/resources/META-INF/spring</directory>
							<targetPath>META-INF/spring</targetPath>
						</resource>
					</webResources>
					 -->
				</configuration>

			</plugin>


			<!-- to generate the MANIFEST-FILE required by the bundle -->
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<version>${felix-version}</version>
				<extensions>true</extensions>
				<executions> (3)
					<execution>
						<id>bundle-manifest</id>
						<phase>process-classes</phase>
						<goals>
							<goal>manifest</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<supportedProjectTypes>
						<supportedProjectType>bundle</supportedProjectType> (3)
						<supportedProjectType>war</supportedProjectType>
					</supportedProjectTypes>
					<instructions>
						<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
						<Bundle-ClassPath>
							.,
							WEB-INF/classes,
						</Bundle-ClassPath>
						<Import-Package>
							javax.servlet;version="[2.5.0, 3.0.0)",
							javax.servlet.http;version="[2.5.0, 3.0.0)",
							javax.servlet.resources;version="[2.5.0, 3.0.0)",
							org.apache.camel.example.reportincident.service,
							org.springframework.web.context;version="[2.5.6, 3.0.0)",
							org.springframework.web.context.support;version="[2.5.6, 3.0.0)",
							org.springframework.osgi.web.context.support,
							org.xml.sax;resolution:=optional,
							org.w3c.dom;resolution:=optional,
							*
						</Import-Package>
						<Private-Package>org.apache.camel.example.reportincident</Private-Package>
						<Export-Package></Export-Package>
						<Webapp-Context>reportincidentweb</Webapp-Context> (4)
						<_failok>true</_failok>
					</instructions>
				</configuration>

			</plugin>
		</plugins>
	</build>
</project>

...

Info

We will try to provide for the next version of this tutorial a parent pom.xml containing the modules list to be build (wink)

Package

To simplify our deployment procedure, we will use the provisioning mechanism of Apache Servicemix called 'Feature'. In a feature xml file, we will define the bundles that we will package and their dependencies. The bundles can be linked to a feature and features can be linked together. This file will be packaged in a jar.

...

Code Block
xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<features>
	<feature name="reportincident" version="1.0"> (1)
		<bundle>mvn:org.apache.camel.example/reportincident.activemq/1.0-SNAPSHOT</bundle> {color:red}(2){color}
		<bundle>mvn:org.apache.camel.example/reportincident.queueservice/1.0-SNAPSHOT</bundle>
		<bundle>mvn:org.apache.camel.example/reportincident.model/1.0-SNAPSHOT</bundle>
		<bundle>mvn:org.apache.camel.example/reportincident.persistence/1.0-SNAPSHOT</bundle>
		<bundle>mvn:org.apache.camel.example/reportincident.service/1.0-SNAPSHOT</bundle>
		<bundle>mvn:org.apache.camel.example/reportincident.webservice/1.0-SNAPSHOT</bundle>
		<bundle>mvn:org.apache.camel.example/reportincident.routing/1.0-SNAPSHOT</bundle>
                <bundle>mvn:org.apache.camel.example/reportincident.web/1.0-SNAPSHOT/war</bundle>
	</feature>
	
	<feature name="camel" version="2.0-M1">
		<feature>camel-core</feature> (3)
		<feature>camel-spring</feature>
		<feature>camel-osgi</feature>
		<feature>camel-bindy</feature>
		<feature>camel-jms</feature>
		<feature>camel-cxf</feature>
		<feature>camel-activemq</feature>
	</feature>

	<feature name="camel-core">
		<bundle>mvn:org.apache.camel/camel-core/2.0-M1</bundle>
	</feature>

	<feature name="camel-spring">
		<bundle>mvn:org.apache.camel/camel-spring/2.0-M1</bundle>
	</feature>

	<feature name="camel-osgi">
		<bundle>mvn:org.apache.camel/camel-osgi/2.0-M1</bundle>
	</feature>

	<feature name="camel-bindy">
		<bundle>mvn:org.apache.camel/camel-bindy/2.0-M1</bundle>
	</feature>
	
	<feature name="camel-mail">
	   <bundle>mvn:org.springframework/spring-context-support/2.5.5</bundle> 
       <bundle>mvn:org.apache.camel/camel-mail/2.0-M1</bundle>
	</feature>
	
    <feature name="camel-velocity">
       <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.velocity/1.5_1</bundle> 
       <bundle>mvn:org.apache.camel/camel-velocity/2.0-M1</bundle>
	</feature>

	<feature name="camel-jms">
        <bundle>mvn:org.springframework/spring-jms/2.5.6</bundle>	    
		<bundle>mvn:org.apache.camel/camel-jms/2.0-M1</bundle>
	</feature>

	<feature name="camel-activemq">
		<feature>activemq</feature>
		<bundle>mvn:org.apache.activemq/activemq-camel/5.2.0</bundle>
	</feature>

	<feature name="camel-cxf">
		<feature>cxf</feature>
		<bundle>mvn:org.apache.camel/camel-cxf/2.0-M1</bundle>
	</feature>
	
	<feature name="cxf-osgi">
		<bundle>mvn:org.apache.servicemix.cxf/org.apache.servicemix.cxf.transport.osgi/4.0.0</bundle>
	</feature>

	<feature name="cxf" version="2.2">
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.fastinfoset/1.2.2_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlsec/1.3.0_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.wss4j/1.5.4_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jetty-bundle/6.1.14_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlbeans/2.4.0_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/1.2_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlschema/1.4.2_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/1.7.0_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/1.1_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.werken-xpath/0.9.4_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.neethi/2.0.4_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.abdera/0.4.0-incubating_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.junit/4.4_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/3.0.1_1</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-io/1.3.2_1</bundle>
		<bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.javamail-api-1.4/1.2.0</bundle>
		<bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxws-api-2.1/1.2.0</bundle>
		<bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.saaj-api-1.3/1.2.0</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.wsdl4j/1.6.1_1</bundle>
		<bundle>mvn:org.apache.geronimo.specs/geronimo-ws-metadata_2.0_spec/1.1.2</bundle>
		<bundle>mvn:org.apache.cxf/cxf-bundle/2.2</bundle>
	</feature>

	<feature name="web-core">
		<bundle>mvn:org.apache.geronimo.specs/geronimo-servlet_2.5_spec/1.1.2</bundle>
		<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jetty-bundle/6.1.14_1</bundle>
	</feature>

	<feature name="web">
		<feature>web-core</feature>
		<bundle>mvn:org.ops4j.pax.web/pax-web-bundle/0.6.0</bundle>
		<bundle>mvn:org.ops4j.pax.web/pax-web-jsp/0.6.0</bundle>
		<bundle>mvn:org.ops4j.pax.web-extender/pax-web-ex-war/0.5.1</bundle>
		<bundle>mvn:org.ops4j.pax.web-extender/pax-web-ex-whiteboard/0.5.1</bundle>
		<bundle>mvn:org.ops4j.pax.url/pax-url-war/0.4.0</bundle>
		<bundle>mvn:org.apache.servicemix.war/org.apache.servicemix.war.deployer/4.0.0</bundle>
	</feature>
	
	<feature name="spring-web">
	    <bundle>mvn:org.springframework/spring-web/2.5.6</bundle>
        <bundle>mvn:org.springframework.osgi/spring-osgi-web/1.2.0-rc1</bundle> 
	</feature>
	
    <feature name="transaction">
        <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
        <bundle>mvn:org.apache.geronimo.specs/geronimo-j2ee-connector_1.5_spec/2.0.0</bundle>
        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.howl/1.0.1-1_1</bundle>
        <bundle>mvn:org.apache.geronimo.components/geronimo-transaction/2.2-r634076</bundle>
        <bundle>mvn:org.springframework/spring-tx/2.5.6</bundle>
        <bundle>mvn:org.apache.servicemix.transaction/org.apache.servicemix.transaction/1.0.0</bundle>
    </feature>
    
    <feature name="connector">
        <feature>transaction</feature>
        <bundle>mvn:org.apache.geronimo.components/geronimo-connector/2.2-r634076</bundle>
        <bundle>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/1.1.1</bundle>
        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jencks/2.1_1</bundle>
    </feature>
    
    <feature name="common">
    	<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-impl/2.1.6_1</bundle>
	<bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/1.2.0</bundle>
	<bundle>mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.1/1.2.0</bundle>
	<bundle>mvn:commons-collections/commons-collections/3.2.1</bundle>
	<bundle>mvn:commons-lang/commons-lang/2.4</bundle>
	<bundle>mvn:commons-pool/commons-pool/1.4</bundle>
	<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.asm/2.2.3_1</bundle>
    </feature>
    
    <feature name="activemq" version="5.2.0">
    	<feature>connector</feature>
    	<bundle>mvn:org.apache.geronimo.specs/geronimo-j2ee-management_1.1_spec/1.0.1</bundle>
    	<bundle>mvn:org.apache.xbean/xbean-spring/3.4.3</bundle>
	<bundle>mvn:org.apache.activemq/activemq-core/5.2.0</bundle>
	<bundle>mvn:org.apache.activemq/activemq-ra/5.2.0</bundle>
	<bundle>mvn:org.apache.activemq/activemq-console/5.2.0</bundle>
	<bundle>mvn:org.apache.activemq/activemq-pool/5.2.0</bundle>
	<bundle>mvn:org.apache.servicemix.activemq/org.apache.servicemix.activemq.commands/4.0.0</bundle>
    </feature>
    
    <feature name="hibernate">
        <bundle>mvn:org.springframework/spring-orm/2.5.6</bundle>
        <bundle>mvn:org.springframework/spring-jdbc/2.5.6</bundle>
    	<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/1.6_2-SNAPSHOT</bundle>
    	<bundle>mvn:org.antlr/com.springsource.antlr/2.7.7</bundle>
    	<bundle>mvn:org.jgroups/com.springsource.org.jgroups/2.5.1</bundle>
    	<bundle>mvn:org.jboss.javassist/com.springsource.javassist/3.3.0.ga</bundle>
    	<bundle>mvn:org.hibernate/com.springsource.org.hibernate/3.3.1.GA</bundle>
    </feature>
    
    <feature name="jdbc-driver">
	<bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-dbcp/1.2.2_3</bundle>
    	<bundle>mvn:com.mysql.jdbc/com.springsource.com.mysql.jdbc/5.1.6</bundle>
    </feature>
    
    <feature name="wicket">
    	<bundle>mvn:org.apache.wicket/wicket/1.3.5</bundle>
    	<bundle>mvn:org.apache.wicket/wicket-ioc/1.3.5</bundle>
    	<bundle>mvn:org.apache.wicket/wicket-spring/1.3.5</bundle>
    	<bundle>mvn:org.apache.wicket/wicket-spring-annot/1.3.5</bundle>
    	<bundle>mvn:org.apache.wicket/wicket-extensions/1.3.5</bundle>
    </feature>
     
</features>

...

The deployment process is very simple and two steps will be necessary :

Step 1 : Copy properties files in etc directory

Copy the files containing your properties file org.apache.camel.example.reportincident.datasource.cfg, ... in the etc directory of ServiceMix and cujstomize them if required

Step 2 : Edit the file

...

org.apache.servicemix.features.cfg

To use the feature file created in the previous section, we must adapt the file org.apache.servicemix.features.cfg that you find in the etc directory

Replace the current featureRepositories line with the following :

Code Block

featuresRepositories=jar:mvn:org.apache.camel.example/reportincident.features/1.0-SNAPSHOT!/reportincident.features-1.0-SNAPSHOT-features.xml

This line will be processed by PAX Url who will pickup the reportincident.features-1.0-SNAPSHOT-features.xml file from the jar located in the maven repository localMavenRepo/org.apache.camel.example/reportincident.features/1.0-SNAPSHOT

and

replace the existing line containing the featuresBoot parameter

by

Code Block

featuresBoot=common,transaction,connector,activemq,web-core,web,spring-web,wicket,cxf,cxf-osgi,camel,jdbc-driver,hibernate,reportincident

By adding these two lines, we will configure our ServiceMix OSGI server to install bundles from features defined in the order appearing at the line of featuresBoot

Note

The deployment order of the bundle is critical in an OSGI environement. This is why for the purposes of this project/tutorial we have organised in consequence. If you plan to change something in the application, be aware of that

Test it

It is time to launch the servicemix server and to test if our application works well

Step 1 : launch application

Step 2 : Check osgi list

Step 3 : Copy incident file

Step 4 : Call a webservice

Conclusion

TODO

...