You’ll need to add HAPI to the container

install mvn:ca.uhn.hapi/hapi-osgi-base/2.3


> On Oct 22, 2018, at 9:12 AM, John F. Berry <bohnje...@yahoo.com.INVALID> 
> wrote:
> 
> 
> 
> 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