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