Hi

you can take a look on the examples in Karaf:

https://github.com/apache/karaf/tree/main/examples/karaf-camel-example

Regards
JB

On Mon, Sep 26, 2022 at 3:51 PM Domke, Alexander
<a.do...@cenit.com.invalid> wrote:
>
> Hello all,
>
> I am trying to load an external route from a blueprint XML file and it is not 
> working. Has anyone done this before and has a tip for me? I am using camel 
> 3.18.2 and Karaf 4.4.1.
>
> My Test Implementation:
>
> package testbundle;
>
> import java.io.File;
> import java.nio.file.Files;
>
> import org.apache.camel.CamelContext;
> import org.apache.camel.Exchange;
> import org.apache.camel.ExtendedCamelContext;
> import org.apache.camel.ProducerTemplate;
> import org.apache.camel.blueprint.BlueprintCamelContext;
> import org.apache.camel.spi.Resource;
> import org.apache.camel.support.DefaultExchange;
> import org.apache.camel.support.ResourceHelper;
> import org.osgi.service.component.annotations.Component;
> import org.osgi.service.component.annotations.Reference;
>
> @Component(
>     immediate = true,
>     service = TestBundle.class,
>     property = {"osgi.command.scope=test", 
> "osgi.command.function=loadRoutes"})
> public class TestBundle {
>
>   public BlueprintCamelContext camelContext;
>
>   @Reference(target = "(camel.context.name=dummyCamelContext)")
>   public void bindCamelContext(CamelContext camelContext) {
>     this.camelContext = (BlueprintCamelContext) camelContext;
>   }
>
>   public void unbindCamelContext() {
>     camelContext = null;
>   }
>
>   public void loadRoutes() throws Exception {
>     loadRoute("C:\\tmp\\before_create.xml", camelContext);
>     camelContext.start();
>     Exchange exchange = new DefaultExchange(camelContext);
>     ProducerTemplate producerTemplate = 
> exchange.getContext().createProducerTemplate();
>     Exchange resultExchange = producerTemplate.send("direct:start", exchange);
>     System.out.println("resultExchange: " + resultExchange);
>
>     if (resultExchange.getException() != null) {
>       throw resultExchange.getException();
>     }
>   }
>
>   private void loadRoute(String name, BlueprintCamelContext camelContext) {
>     ExtendedCamelContext ecc = camelContext.adapt(ExtendedCamelContext.class);
>     try {
>       File file = new File(name);
>       byte[] content = Files.readAllBytes(file.toPath());
>       Resource resource = ResourceHelper.fromBytes(file.getAbsolutePath(), 
> content);
>       ecc.getRoutesLoader().loadRoutes(resource);
>       System.out.println("ecc routes: " + ecc.getRoutes());
>       System.out.println("camelContext routes: " + 
> camelContext.getRouteDefinitions());
>
>     } catch (Exception e) {
>       throw new RuntimeException(e);
>     }
>   }
> }
>
> My Blueprint with camel context:
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"; 
> xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"; 
> xmlns:enc="http://karaf.apache.org/xmlns/jasypt/v1.0.0"; xsi:schemaLocation="
>
>        http://www.osgi.org/xmlns/blueprint/v1.0.0 
> http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>
>
>     <camelContext xmlns="http://camel.apache.org/schema/blueprint"; 
> id="dummyCamelContext">
>
>         <route id="create" autoStartup="true">
>
>             <from uri="direct:dummyStart" />
>
>             <to uri="mock:dummyEnd" />
>
>         </route>
>
>     </camelContext>
>
> </blueprint>
>
>
> My Route to load:
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";>
>
>     <routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> xmlns="http://camel.apache.org/schema/blueprint"; xsi:schemaLocation="
>
>             http://camel.apache.org/schema/blueprint
>
>             http://camel.apache.org/schema/blueprint/camel-blueprint.xsd";>
>
>
>
>         <route id="xml-route" autoStartup="true">
>
>             <from uri="direct:start" />
>
>             <log message="Hello XML!" />
>
>         </route>
>
>     </routes>
>
> </blueprint>
>
>
> Error executing command: No consumers available on endpoint: direct://start. 
> Exchange[]
>
> I am at a loss, do you have any idea what I am doing wrong?
>
> Greeting
> Alex
>
> CENIT AG, Industriestrasse 52-54, 70565 Stuttgart, Tel.: +49 711 7825-30, 
> Fax: +49 711 7825-4000, Internet: www.cenit.com
> Geschaeftsstellen (Branch Offices): Berlin, Frankfurt, Hamburg, Hannover, 
> Muenchen, Oelsnitz, Ratingen, Saarbruecken
> Vorstandsmitglieder (Members of the Board): Peter Schneck, Dr. Markus Wesel
> Aufsichtsratsmitglieder (Supervisory Board Members): Rainer Koppitz 
> (Vorsitzender des Aufsichtsrats / Chairman of the Supervisory Board), Prof. 
> Dr. Isabell Welpe, Ricardo Malta
> Bankverbindungen (Bank Accounts):
> Deutsche Bank (BLZ 600 700 70) Kto. 1661 040 IBAN : DE85 6007 0070 0166 1040 
> 00 SWIFT-CODE : DEUTDESS,
> Commerzbank (BLZ 600 400 71) Kto. 532 015 500 IBAN : DE83 6004 0071 0532 0155 
> 00 SWIFT-Code : COBADEFF600,
> Registergericht (Registry court): Amtsgericht Stuttgart
> Handelsregister (Commercial Register): HRB Nr. 19117
> Umsatzsteuer (VAT) ID: DE 147 862 777

Reply via email to