You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by "John F. Berry" <bo...@yahoo.com.INVALID> on 2018/10/17 14:53:46 UTC

Re: Established Java DSL route into Camel Spring OSGi container - for use with Kataf container

Thanks Quinn for your advice and patience (and for the rest of the forum members!) 

I did attempt to make the changes below.. and to research the elements you presented to understand them better.. However, I'm still at an impasse.
I still cannot "deploy" into Karaf.. Perhaps this is a Karaf install issue and have also discussed this in that forum.
What exactly is the "bundle" to deploy?  Is it the entire project directory and its contents?  

A side note:  I've attempted to create a new maven generated camel-archetype-blueprint project (selection 1187 from the archetype list in maven 3.5.3) and upon installing it (with no mods), I get a java error:  
[         Blueprint Extender: 1] BlueprintContainerImpl         INFO  Blueprint bundle org.apache.aries.blueprint.core/1.10.0 has been started[         Blueprint Extender: 2] BlueprintContainerImpl         ERROR Unable to start container for blueprint bundle org.apache.camel.camel-blueprint/2.22.1
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to instantiate components

So I was planning to start this new project and attempt deployment to Karaf.. and add the steps of my route one at a time.. but I cannot even start with this one!

Thanks!


On Wednesday, September 5, 2018, 10:18:53 AM EDT, Quinn Stevenson <qu...@pronoia-solutions.com> wrote: 





Assuming you’re using Maven, you can use the maven-bundle-plugin to generate the OSGi metadata in the MANIFEST.MF (which is what makes a jar a bundle).  You’ll add something like the following to your build plugins

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>3.5.0</version>
    <extensions>true</extensions>
</plugin>

and you’ll need to change the <packaging> element to bundle for your artifact.  If you were creating a jar before you may not have the packaging element (since jar is the default for this), so you may need to add it.  Here’s an example from one of my other projects

<groupId>com.github.hqstevenson.splunk</groupId>
<artifactId>splunk.httpec</artifactId>
<packaging>bundle</packaging>
<version>1.5.1</version>

After you have a bundle, you can install it into Karaf however you’d like - putting the bundle in the deploy folder is one way.  BTW - if you still had the Blueprint/XML version of the route, you could put the XML file into the deploy folder as well - Karaf would run it for you, and you wouldn’t have to package it in bundle (I have a few customers that do this in some cases).


> On Sep 5, 2018, at 7:17 AM, John F. Berry <bo...@yahoo.com.INVALID> wrote:
> 
> Thanks Quinn, 
> I haven't converted my jar at all.. I've only packaged my camel java DSL project into an executable jar from maven.
> So I think you're giving me step #2 of a process if I already converted my jar to an OSGi bundle.  I haven't and don't know offhand how to.
> If I had this jar as an OSGi bundle, couldn't I simply place it in the deploy folder of Karaf?  
> 
> Sorry folks!  I know this is a Camel thread not a Karaf or OSGi forum.
> 
> 
> On Wednesday, September 5, 2018, 9:10:33 AM EDT, Quinn Stevenson <qu...@pronoia-solutions.com> wrote: 
> 
> 
> 
> The easiest way to bootstrap a route in Karaf is to use Blueprint.  I’m assuming you’ve already converted your jar to an OSGi bundle.
> 
> If you add a small XML file to src/main/resources/OSGI-INF/blueprint (assuming you’re using Maven for this) the route should startup in Karaf when you install your bundle.  The XML file will look something like this
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
> 
>  <bean id="route-builder" class="my.route.Builder" />
> 
>  <camelContext xmlns="http://camel.apache.org/schema/blueprint">
>      <routeBuilder ref="route-builder" />
>  </camelContext>
> 
> </blueprint>
> 
> HTH
> 
> 
>> On Sep 4, 2018, at 10:10 AM, John F. Berry <bo...@yahoo.com.INVALID> wrote:
>> 
>> I've posted a few questions over the past month about various steps in a camel route.  I had developed both a Spring version and a Java DSL version simultaneously at the beginning, because of either the lack or abundance of certain endpoint development in each.  The Java DSL version  worked out best in the continuing development, but then the "powers that be" asked me to make a Windows service for it.  
>> I ended up being able to package it to en executable jar, but then found that perhaps I should use Karaf as an OSGi container run as a windows service.  I have Karaf installed with it's awaiting service container, but it looks like it's a pain to configure a Camel Java DSL route to an OSGi container, but what I did seem to find was people have used a Spring OSGi Camel package and overrode the configuration to execute a java "bean".
>> My question is:  Can the entire Camel Context developed in Spring be pointed to the completed Java DSL developed package?  Can I just add a shell around my already completed work?  My route runs fine from maven using "mvn exec:java" or running java - jar <package> .
>> Now that I got this running, I'd rather not disassemble and re-wire, although it would be a good educational experience. 
>> 
>> MyRouteBuilder.java :
>> 
>> import java.util.Base64;
>> import org.apache.camel.spi.DataFormat;
>> 
>> 
>> import ca.uhn.hl7v2.parser.Parser;
>> import org.apache.commons.dbcp2.BasicDataSource;
>> import org.apache.camel.component.sql.SqlComponent;
>> 
>> public class MyRouteBuilder extends RouteBuilder {
>>    @Override
>>    public void configure() throws Exception {
>>                BasicDataSource basicDataSource = new BasicDataSource();
>>                basicDataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
>>                basicDataSource.setUrl("jdbc:sqlserver://XXX:52739;databaseName=XXX;");
>>                basicDataSource.setUsername("XXX");
>>                basicDataSource.setPassword("XXX");
>>                SqlComponent sqlComponent = new SqlComponent();
>>                sqlComponent.setDataSource(basicDataSource);
>>                getContext().addComponent("psoft-sql", sqlComponent);
>> 
>> 
>>        from("mllp://ZZZ:8888")
>>        .log("..Received HL7 message with control id ${header.CamelMllpMessageControlId}")
>>        .convertBodyTo(String.class)
>>        .unmarshal()
>>        .hl7(false)
>>        .process(new Processor() {
>>          public void process(Exchange exchange) throws Exception {
>>          Message message = exchange.getIn().getBody(Message.class);
>>          ca.uhn.hl7v2.util.Terser terser = new Terser(message);
>>          String obx5 = terser.get("/.OBX-5-5");
>>          String EDMId = terser.get("/.OBR-3") + ".pdf";
>>          String voucher = terser.get("/.OBR-2");
>> 
>>          byte[] decoded = Base64.getDecoder().decode(obx5);
>>          exchange.getOut().setBody(decoded);
>>          exchange.getOut().setHeader("voucher", voucher);
>>          exchange.getOut().setHeader("CamelFileName", EDMId );
>>            }
>>          } )
>>      .log("..Processed voucher ${header.voucher} to file ${header.CamelFileName}")
>>      .to("file:target/messages/others")
>>      .recipientList(simple("psoft-sql:INSERT INTO lawsonprod.PeopleSoftVCR (Voucher, Facility, image) VALUES ('12345', '1', '${header.CamelFileName}')") )
>>      ;
>> 
>>    }
>> 
>> }
>> 
>> POM.xml (given there's a lot of extras in here not used due to attempts during development) 
>> 
>> <?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.ZZZ.camel</groupId>
>>  <artifactId>EDMtoPSoft-java</artifactId>
>>  <packaging>jar</packaging>
>>  <version>1.0-SNAPSHOT</version>
>> 
>>  <name>EDM base64 HL7 documents to PeopleSoft</name>
>> 
>>  <properties>
>>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
>>  </properties>
>> 
>>  <dependencyManagement>
>>    <dependencies>
>>      <!-- Camel BOM -->
>>      <dependency>
>>        <groupId>org.apache.camel</groupId>
>>        <artifactId>camel-parent</artifactId>
>>        <version>2.21.1</version>
>>        <scope>import</scope>
>>        <type>pom</type>
>>      </dependency>
>>    </dependencies>
>>  </dependencyManagement>
>> 
>>  <dependencies>
>> 
>>    <dependency>
>>      <groupId>org.apache.camel</groupId>
>>      <artifactId>camel-core</artifactId>
>>    </dependency>
>> 
>>    <!-- logging -->
>>    <dependency>
>>      <groupId>org.apache.logging.log4j</groupId>
>>      <artifactId>log4j-api</artifactId>
>>      <scope>runtime</scope>
>>    </dependency>
>>    <dependency>
>>      <groupId>org.apache.logging.log4j</groupId>
>>      <artifactId>log4j-core</artifactId>
>>      <scope>runtime</scope>
>>    </dependency>
>>    <dependency>
>>      <groupId>org.apache.logging.log4j</groupId>
>>      <artifactId>log4j-slf4j-impl</artifactId>
>>      <scope>runtime</scope>
>>    </dependency>
>> 
>>    <!-- testing -->
>>    <dependency>
>>      <groupId>org.apache.camel</groupId>
>>      <artifactId>camel-test</artifactId>
>>      <scope>test</scope>
>>    </dependency>
>> 
>>    <dependency>
>>    <groupId>javax.xml.bind</groupId>
>>    <artifactId>jaxb-api</artifactId>
>>    <version>2.2.11</version>
>>    </dependency>
>>    <dependency>
>>    <groupId>javax.activation</groupId>
>>    <artifactId>activation</artifactId>
>>    <version>1.1.1</version>
>>    </dependency>
>>    <dependency>
>>    <groupId>org.apache.camel</groupId>
>>    <artifactId>camel-mllp</artifactId>
>>    <version>2.21.1</version>
>>    </dependency>
>> 
>>    <!-- Project stuff -->
>>    <dependency>
>>    <groupId>org.apache.camel</groupId>
>>    <artifactId>camel-hl7</artifactId>
>>    <version>2.21.1</version>
>>    </dependency>
>> 
>>    <dependency>
>>    <groupId>org.apache.camel</groupId>
>>    <artifactId>camel-netty4</artifactId>
>>    <version>2.21.1</version>
>>    </dependency>
>> 
>>    <dependency>
>>    <groupId>org.apache.camel</groupId>
>>    <artifactId>camel-base64</artifactId>
>>    <version>2.21.1</version>
>>    </dependency>
>> 
>>    <dependency>
>>    <groupId>org.apache.camel</groupId>
>>    <artifactId>camel-sql</artifactId>
>>    <version>2.21.1</version>
>>    </dependency>
>> 
>>    <dependency>
>>    <groupId>org.apache.commons</groupId>
>>    <artifactId>commons-dbcp2</artifactId>
>>    <version>2.5.0</version>
>>    </dependency>
>> 
>>    <dependency>
>>    <groupId>com.microsoft.sqlserver</groupId>
>>    <artifactId>mssql-jdbc</artifactId>
>>    <version>7.0.0.jre10</version>
>>    </dependency>
>> 
>> 
>>  </dependencies>
>> 
>>  <build>
>>    <defaultGoal>install</defaultGoal>
>> 
>>    <plugins>
>>      <plugin>
>>        <groupId>org.apache.maven.plugins</groupId>
>>        <artifactId>maven-compiler-plugin</artifactId>
>>        <version>3.7.0</version>
>>        <configuration>
>>          <source>1.8</source>
>>          <target>1.8</target>
>>        </configuration>
>>      </plugin>
>>      <plugin>
>>        <groupId>org.apache.maven.plugins</groupId>
>>        <artifactId>maven-resources-plugin</artifactId>
>>        <version>3.0.2</version>
>>        <configuration>
>>          <encoding>UTF-8</encoding>
>>        </configuration>
>>      </plugin>
>> 
>>      <!-- Allows the example to be run via 'mvn compile exec:java' -->
>>      <plugin>
>>        <groupId>org.codehaus.mojo</groupId>
>>        <artifactId>exec-maven-plugin</artifactId>
>>        <version>1.6.0</version>
>>        <configuration>
>>          <mainClass>org.ZZZ.camel.MainApp</mainClass>
>>          <includePluginDependencies>false</includePluginDependencies>
>>        </configuration>
>>      </plugin>
>> 
>>            <plugin>
>>                <artifactId>maven-assembly-plugin</artifactId>
>>                <configuration>
>>                    <descriptorRefs>
>>                        <descriptorRef>jar-with-dependencies</descriptorRef>
>>                    </descriptorRefs>
>>                    <archive>
>>                        <manifest>
>>                            <mainClass>org.ZZZ.camel.MainApp</mainClass>
>>                        </manifest>
>>                    </archive>
>>                </configuration>
>>                <executions>
>>                    <execution>
>> 
>>                        <phase>package</phase> <!-- bind to the packaging phase -->
>>                        <goals>
>>                            <goal>single</goal>
>>                        </goals>
>>                    </execution>
>>                </executions>
>>            </plugin>
>> 
>> 
>>            <plugin>
>>                <groupId>org.apache.felix</groupId>
>>                <artifactId>maven-bundle-plugin</artifactId>
>>                <version>2.3.7</version>
>>                <extensions>true</extensions>
>>                <configuration>
>>                    <instructions>
>>                        <Bundle-Name>${project.name}</Bundle-Name>
>>                        <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
>>                        <Export-Package>
>>                            org.ZZZ.camel
>>                        </Export-Package>
>>                    </instructions>
>>                </configuration>
>>            </plugin>
>> 
>>    </plugins>
>>  </build>
>> 
>> </project>
>> 

Re: Established Java DSL route into Camel Spring OSGi container - for use with Kataf container

Posted by Quinn Stevenson <qu...@pronoia-solutions.com>.
I could be a Karaf install issue.  The Karaf setup is usually pretty simple
- expand the Karaf archive
- start Karaf ( $KARAF_HOME/bin/start )
- login to the Karaf console ($KARAF_HOME/bin/client)
- add the Came feature repositoryl into the Karaf container ( feature:repo-add camel 2.21.1)
- install Camel into the container ( feature:install camel )

At that point, you should be able to see some Camel bundles when you  list the bundles in the container ( list )

Now, your “bundle” is just your jar (with the OSGi bundle metadata in the MANIFEST.MF - that’s what the maven-bundle-plugin adds).  Assuming you’re bundle doesn’t require anything outside of camel-core, you should be able to install your bundle in your local Maven repository (mvn install), and then install it into Karaf from the Karaf console ( install -s mvn:group-id/artifact-id/version ).

Another option is to you the file deployer.  If you have a simple Camel Blueprint route, you can put the XML file in the $KARAF_HOME/deploy directory and the context should start.

BTW - the error below isn’t a Java error - it’s a Blueprint error.  Something went wrong when Blueprint tried to execute the definitions in your Blueprint XML file.

> On Oct 17, 2018, at 8:53 AM, John F. Berry <bo...@yahoo.com.INVALID> wrote:
> 
> Thanks Quinn for your advice and patience (and for the rest of the forum members!) 
> 
> I did attempt to make the changes below.. and to research the elements you presented to understand them better.. However, I'm still at an impasse.
> I still cannot "deploy" into Karaf.. Perhaps this is a Karaf install issue and have also discussed this in that forum.
> What exactly is the "bundle" to deploy?  Is it the entire project directory and its contents?  
> 
> A side note:  I've attempted to create a new maven generated camel-archetype-blueprint project (selection 1187 from the archetype list in maven 3.5.3) and upon installing it (with no mods), I get a java error:  
> [         Blueprint Extender: 1] BlueprintContainerImpl         INFO  Blueprint bundle org.apache.aries.blueprint.core/1.10.0 has been started[         Blueprint Extender: 2] BlueprintContainerImpl         ERROR Unable to start container for blueprint bundle org.apache.camel.camel-blueprint/2.22.1
> org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to instantiate components
> 
> So I was planning to start this new project and attempt deployment to Karaf.. and add the steps of my route one at a time.. but I cannot even start with this one!
> 
> Thanks!
> 
> 
> On Wednesday, September 5, 2018, 10:18:53 AM EDT, Quinn Stevenson <qu...@pronoia-solutions.com> wrote: 
> 
> 
> 
> 
> 
> Assuming you’re using Maven, you can use the maven-bundle-plugin to generate the OSGi metadata in the MANIFEST.MF (which is what makes a jar a bundle).  You’ll add something like the following to your build plugins
> 
> <plugin>
>     <groupId>org.apache.felix</groupId>
>     <artifactId>maven-bundle-plugin</artifactId>
>     <version>3.5.0</version>
>     <extensions>true</extensions>
> </plugin>
> 
> and you’ll need to change the <packaging> element to bundle for your artifact.  If you were creating a jar before you may not have the packaging element (since jar is the default for this), so you may need to add it.  Here’s an example from one of my other projects
> 
> <groupId>com.github.hqstevenson.splunk</groupId>
> <artifactId>splunk.httpec</artifactId>
> <packaging>bundle</packaging>
> <version>1.5.1</version>
> 
> After you have a bundle, you can install it into Karaf however you’d like - putting the bundle in the deploy folder is one way.  BTW - if you still had the Blueprint/XML version of the route, you could put the XML file into the deploy folder as well - Karaf would run it for you, and you wouldn’t have to package it in bundle (I have a few customers that do this in some cases).
> 
> 
>> On Sep 5, 2018, at 7:17 AM, John F. Berry <bo...@yahoo.com.INVALID> wrote:
>> 
>> Thanks Quinn, 
>> I haven't converted my jar at all.. I've only packaged my camel java DSL project into an executable jar from maven.
>> So I think you're giving me step #2 of a process if I already converted my jar to an OSGi bundle.  I haven't and don't know offhand how to.
>> If I had this jar as an OSGi bundle, couldn't I simply place it in the deploy folder of Karaf?  
>> 
>> Sorry folks!  I know this is a Camel thread not a Karaf or OSGi forum.
>> 
>> 
>> On Wednesday, September 5, 2018, 9:10:33 AM EDT, Quinn Stevenson <qu...@pronoia-solutions.com> wrote: 
>> 
>> 
>> 
>> The easiest way to bootstrap a route in Karaf is to use Blueprint.  I’m assuming you’ve already converted your jar to an OSGi bundle.
>> 
>> If you add a small XML file to src/main/resources/OSGI-INF/blueprint (assuming you’re using Maven for this) the route should startup in Karaf when you install your bundle.  The XML file will look something like this
>> 
>> <?xml version="1.0" encoding="UTF-8"?>
>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
>> 
>>   <bean id="route-builder" class="my.route.Builder" />
>> 
>>   <camelContext xmlns="http://camel.apache.org/schema/blueprint">
>>       <routeBuilder ref="route-builder" />
>>   </camelContext>
>> 
>> </blueprint>
>> 
>> HTH
>> 
>> 
>>> On Sep 4, 2018, at 10:10 AM, John F. Berry <bo...@yahoo.com.INVALID> wrote:
>>> 
>>> I've posted a few questions over the past month about various steps in a camel route.  I had developed both a Spring version and a Java DSL version simultaneously at the beginning, because of either the lack or abundance of certain endpoint development in each.  The Java DSL version  worked out best in the continuing development, but then the "powers that be" asked me to make a Windows service for it.  
>>> I ended up being able to package it to en executable jar, but then found that perhaps I should use Karaf as an OSGi container run as a windows service.  I have Karaf installed with it's awaiting service container, but it looks like it's a pain to configure a Camel Java DSL route to an OSGi container, but what I did seem to find was people have used a Spring OSGi Camel package and overrode the configuration to execute a java "bean".
>>> My question is:  Can the entire Camel Context developed in Spring be pointed to the completed Java DSL developed package?  Can I just add a shell around my already completed work?  My route runs fine from maven using "mvn exec:java" or running java - jar <package> .
>>> Now that I got this running, I'd rather not disassemble and re-wire, although it would be a good educational experience. 
>>> 
>>> MyRouteBuilder.java :
>>> 
>>> import java.util.Base64;
>>> import org.apache.camel.spi.DataFormat;
>>> 
>>> 
>>> import ca.uhn.hl7v2.parser.Parser;
>>> import org.apache.commons.dbcp2.BasicDataSource;
>>> import org.apache.camel.component.sql.SqlComponent;
>>> 
>>> public class MyRouteBuilder extends RouteBuilder {
>>>     @Override
>>>     public void configure() throws Exception {
>>>                 BasicDataSource basicDataSource = new BasicDataSource();
>>>                 basicDataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
>>>                 basicDataSource.setUrl("jdbc:sqlserver://XXX:52739;databaseName=XXX;");
>>>                 basicDataSource.setUsername("XXX");
>>>                 basicDataSource.setPassword("XXX");
>>>                 SqlComponent sqlComponent = new SqlComponent();
>>>                 sqlComponent.setDataSource(basicDataSource);
>>>                 getContext().addComponent("psoft-sql", sqlComponent);
>>> 
>>> 
>>>         from("mllp://ZZZ:8888")
>>>         .log("..Received HL7 message with control id ${header.CamelMllpMessageControlId}")
>>>         .convertBodyTo(String.class)
>>>         .unmarshal()
>>>         .hl7(false)
>>>         .process(new Processor() {
>>>           public void process(Exchange exchange) throws Exception {
>>>           Message message = exchange.getIn().getBody(Message.class);
>>>           ca.uhn.hl7v2.util.Terser terser = new Terser(message);
>>>           String obx5 = terser.get("/.OBX-5-5");
>>>           String EDMId = terser.get("/.OBR-3") + ".pdf";
>>>           String voucher = terser.get("/.OBR-2");
>>> 
>>>           byte[] decoded = Base64.getDecoder().decode(obx5);
>>>           exchange.getOut().setBody(decoded);
>>>           exchange.getOut().setHeader("voucher", voucher);
>>>           exchange.getOut().setHeader("CamelFileName", EDMId );
>>>             }
>>>           } )
>>>       .log("..Processed voucher ${header.voucher} to file ${header.CamelFileName}")
>>>       .to("file:target/messages/others")
>>>       .recipientList(simple("psoft-sql:INSERT INTO lawsonprod.PeopleSoftVCR (Voucher, Facility, image) VALUES ('12345', '1', '${header.CamelFileName}')") )
>>>       ;
>>> 
>>>     }
>>> 
>>> }
>>> 
>>> POM.xml (given there's a lot of extras in here not used due to attempts during development) 
>>> 
>>> <?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.ZZZ.camel</groupId>
>>>   <artifactId>EDMtoPSoft-java</artifactId>
>>>   <packaging>jar</packaging>
>>>   <version>1.0-SNAPSHOT</version>
>>> 
>>>   <name>EDM base64 HL7 documents to PeopleSoft</name>
>>> 
>>>   <properties>
>>>     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>>     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
>>>   </properties>
>>> 
>>>   <dependencyManagement>
>>>     <dependencies>
>>>       <!-- Camel BOM -->
>>>       <dependency>
>>>         <groupId>org.apache.camel</groupId>
>>>         <artifactId>camel-parent</artifactId>
>>>         <version>2.21.1</version>
>>>         <scope>import</scope>
>>>         <type>pom</type>
>>>       </dependency>
>>>     </dependencies>
>>>   </dependencyManagement>
>>> 
>>>   <dependencies>
>>> 
>>>     <dependency>
>>>       <groupId>org.apache.camel</groupId>
>>>       <artifactId>camel-core</artifactId>
>>>     </dependency>
>>> 
>>>     <!-- logging -->
>>>     <dependency>
>>>       <groupId>org.apache.logging.log4j</groupId>
>>>       <artifactId>log4j-api</artifactId>
>>>       <scope>runtime</scope>
>>>     </dependency>
>>>     <dependency>
>>>       <groupId>org.apache.logging.log4j</groupId>
>>>       <artifactId>log4j-core</artifactId>
>>>       <scope>runtime</scope>
>>>     </dependency>
>>>     <dependency>
>>>       <groupId>org.apache.logging.log4j</groupId>
>>>       <artifactId>log4j-slf4j-impl</artifactId>
>>>       <scope>runtime</scope>
>>>     </dependency>
>>> 
>>>     <!-- testing -->
>>>     <dependency>
>>>       <groupId>org.apache.camel</groupId>
>>>       <artifactId>camel-test</artifactId>
>>>       <scope>test</scope>
>>>     </dependency>
>>> 
>>>     <dependency>
>>>     <groupId>javax.xml.bind</groupId>
>>>     <artifactId>jaxb-api</artifactId>
>>>     <version>2.2.11</version>
>>>     </dependency>
>>>     <dependency>
>>>     <groupId>javax.activation</groupId>
>>>     <artifactId>activation</artifactId>
>>>     <version>1.1.1</version>
>>>     </dependency>
>>>     <dependency>
>>>     <groupId>org.apache.camel</groupId>
>>>     <artifactId>camel-mllp</artifactId>
>>>     <version>2.21.1</version>
>>>     </dependency>
>>> 
>>>     <!-- Project stuff -->
>>>     <dependency>
>>>     <groupId>org.apache.camel</groupId>
>>>     <artifactId>camel-hl7</artifactId>
>>>     <version>2.21.1</version>
>>>     </dependency>
>>> 
>>>     <dependency>
>>>     <groupId>org.apache.camel</groupId>
>>>     <artifactId>camel-netty4</artifactId>
>>>     <version>2.21.1</version>
>>>     </dependency>
>>> 
>>>     <dependency>
>>>     <groupId>org.apache.camel</groupId>
>>>     <artifactId>camel-base64</artifactId>
>>>     <version>2.21.1</version>
>>>     </dependency>
>>> 
>>>     <dependency>
>>>     <groupId>org.apache.camel</groupId>
>>>     <artifactId>camel-sql</artifactId>
>>>     <version>2.21.1</version>
>>>     </dependency>
>>> 
>>>     <dependency>
>>>     <groupId>org.apache.commons</groupId>
>>>     <artifactId>commons-dbcp2</artifactId>
>>>     <version>2.5.0</version>
>>>     </dependency>
>>> 
>>>     <dependency>
>>>     <groupId>com.microsoft.sqlserver</groupId>
>>>     <artifactId>mssql-jdbc</artifactId>
>>>     <version>7.0.0.jre10</version>
>>>     </dependency>
>>> 
>>> 
>>>   </dependencies>
>>> 
>>>   <build>
>>>     <defaultGoal>install</defaultGoal>
>>> 
>>>     <plugins>
>>>       <plugin>
>>>         <groupId>org.apache.maven.plugins</groupId>
>>>         <artifactId>maven-compiler-plugin</artifactId>
>>>         <version>3.7.0</version>
>>>         <configuration>
>>>           <source>1.8</source>
>>>           <target>1.8</target>
>>>         </configuration>
>>>       </plugin>
>>>       <plugin>
>>>         <groupId>org.apache.maven.plugins</groupId>
>>>         <artifactId>maven-resources-plugin</artifactId>
>>>         <version>3.0.2</version>
>>>         <configuration>
>>>           <encoding>UTF-8</encoding>
>>>         </configuration>
>>>       </plugin>
>>> 
>>>       <!-- Allows the example to be run via 'mvn compile exec:java' -->
>>>       <plugin>
>>>         <groupId>org.codehaus.mojo</groupId>
>>>         <artifactId>exec-maven-plugin</artifactId>
>>>         <version>1.6.0</version>
>>>         <configuration>
>>>           <mainClass>org.ZZZ.camel.MainApp</mainClass>
>>>           <includePluginDependencies>false</includePluginDependencies>
>>>         </configuration>
>>>       </plugin>
>>> 
>>>             <plugin>
>>>                 <artifactId>maven-assembly-plugin</artifactId>
>>>                 <configuration>
>>>                     <descriptorRefs>
>>>                         <descriptorRef>jar-with-dependencies</descriptorRef>
>>>                     </descriptorRefs>
>>>                     <archive>
>>>                         <manifest>
>>>                             <mainClass>org.ZZZ.camel.MainApp</mainClass>
>>>                         </manifest>
>>>                     </archive>
>>>                 </configuration>
>>>                 <executions>
>>>                     <execution>
>>> 
>>>                         <phase>package</phase> <!-- bind to the packaging phase -->
>>>                         <goals>
>>>                             <goal>single</goal>
>>>                         </goals>
>>>                     </execution>
>>>                 </executions>
>>>             </plugin>
>>> 
>>> 
>>>             <plugin>
>>>                 <groupId>org.apache.felix</groupId>
>>>                 <artifactId>maven-bundle-plugin</artifactId>
>>>                 <version>2.3.7</version>
>>>                 <extensions>true</extensions>
>>>                 <configuration>
>>>                     <instructions>
>>>                         <Bundle-Name>${project.name}</Bundle-Name>
>>>                         <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
>>>                         <Export-Package>
>>>                             org.ZZZ.camel
>>>                         </Export-Package>
>>>                     </instructions>
>>>                 </configuration>
>>>             </plugin>
>>> 
>>>     </plugins>
>>>   </build>
>>> 
>>> </project>
>>>