Hi,

As Quinn say, you can use Blueprint in Karaf.

If you are new on Karaf, you can start by looking at the examples in the
distribution :

https://karaf.apache.org/documentation.html

regards,

François Papon
fpa...@apache.org

Le 05/09/2018 à 17:17, John F. Berry a écrit :
> 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