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>
>>>