I have added these to the POM... just in case that solved the Karaf issue.  No 
luck!

<dependency>
  <groupId>ca.uhn.hapi</groupId>
  <artifactId>hapi-base</artifactId>
  <version>2.1</version>
</dependency>

<dependency>
    <groupId>ca.uhn.hapi</groupId>
    <artifactId>hapi-osgi-base</artifactId>
    <version>2.0</version>
</dependency>




On Monday, October 22, 2018, 9:34:31 AM EDT, John F. Berry 
<bohnje...@yahoo.com> wrote: 





You've been so much help Quinn, thanks!
I did not realize you could import a bundle though maven like that

So close...

I got an error because of some unresolved requirements with OSGi and my hl7 
parsing package:

osgi.wiring.package; (osgi.wiring.package=ca.uhn.hl7v2.model) Unresolved 
requirements: [[EDMtoPSoft-java [71](R 71.0)] osgi.wiring.package; 
(osgi.wiring.package=ca.uhn.hl7v2.model)

I do have this set under the felix plugin:      
<Import-Package>*</Import-Package>

I did notice I was missing a dependency in my POM
but it is being imported in my routebuilder java:
import ca.uhn.hl7v2.model.Message;
import ca.uhn.hl7v2.util.Terser;
import ca.uhn.hl7v2.DefaultHapiContext;
import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.HapiContext;

I assume I should have this declared as a POM dependency?  I've tried a few 
blind tries at declaring something, but can't seem to get it. 



On ‎Thursday‎, ‎October‎ ‎18‎, ‎2018‎ ‎10‎:‎53‎:‎10‎ ‎PM‎ ‎EDT, Quinn Stevenson 
<qu...@pronoia-solutions.com> wrote: 





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 <bohnje...@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 <bohnje...@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 <bohnje...@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>
>>> 

Reply via email to