Thank you François, I understand blueprint archetype runs under Karaf... but my original question was do I need to disassemble my developed Java DSL route and rewrite for the Blueprint (looks like Spring) from java? Or can I simply embed a call in a Blueprint archetype to call a jar, reference the camel DSL route as a bean, or override the Blurprint Camel context with what I already have?
In case you haven't witnessed yet, I'm quite new to camel, maven and utilizing open source modules that this technology is so deeply embedded in, so my apologies if I take us in circles! On Wednesday, September 5, 2018, 9:48:11 AM EDT, Francois Papon <[email protected]> wrote: 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 [email protected] 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 > <[email protected]> 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 <[email protected]> >> 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> >>
