2016-12-15 2 views
-1

Ich versuche verschiedene Dinge ein eigenständiges Kamel mit dem cdi.mainStart Kamel Standalone mit cdi Container

org.apache.camel.cdi.Main.main(); 

//not org.apache.camel.Main 

ich auch deltaspike so konfiguriert haben, zu erstellen und ich sehe den cdi Behälter, aber mein CamelContext ist nicht gestartet.

Wenn schon jemand einen Camel-Boot-CDI-Standalone ausgeführt hat, könnten Sie den Code senden?

Update: ich immer diese Art von Fehlern halten:

org.apache.webbeans.exception.WebBeansDeploymentException: javax.enterprise.inject.AmbiguousResolutionException: There is more than one Bean with type org.apache.camel.CamelContextQualifiers: [@javax.enterprise.inject.Default()] 
    for injection into Field Injection Point, field name : ctx, Bean Owner : [ContextInitializer, WebBeansType:MANAGED, Name:null, API Types:[java.lang.Object,proj.core.ContextInitializer], Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
    found beans: 
    CdiCamelContext, WebBeansType:THIRDPARTY, Name:CamelContext, API Types:[org.apache.camel.CamelContext,org.apache.camel.cdi.CdiCamelContext,java.lang.Object], Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any] from jar:file:/P:/atos/common/apache-maven-repo/org/apache/camel/camel-cdi/2.16.1/camel-cdi-2.16.1.jar!/org/apache/camel/cdi/CdiCamelContext.class 
    CamelContext, WebBeansType:PRODUCERMETHOD, Name:null, API Types:[org.apache.camel.CamelContext,org.apache.camel.SuspendableService,org.apache.camel.RuntimeConfiguration,java.lang.Object,org.apache.camel.Service], Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any] from file:/P:/atos/proj-vnext/proj-core/target/classes/proj/core/CamelContextFactory.class 
+1

Schauen Sie sich die vorhandenen CDI-Beispiele an –

+0

Ich habe mir die Dokumentation und auch das Github-Repo angeschaut, konnte aber nicht als Standalone-App funktionieren. Ich versuche es mit Apache Open Webbeans zu konfigurieren, aber der CamelContext mit ApplicationScope wird nie gestartet. Ich habe sicherlich ein Problem in meiner Konfig und werde wieder kommen, um die Konfig zu posten, wenn jemand auch ein Problem mit der Config hatte –

+0

eine andere Sache meinst du das Beispiel, das von hier gefunden werden kann: http://camel.apache.org/camel -boot.html oder irgendwo im github Repo. (Ich habe nur eine Standalone-App ohne cdi gefunden) –

Antwort

1

dir vor, wenn jemand das gleiche Problem auftritt, finde ich nur das Problem und es war nur ein Konfigurationsproblem in der pom.xml. Kamel Kern und Kamel cdi Version

hier Mischen ist mein Arbeits config => Kamel, OpenWebBeans Behälter und deltaspike

*/Code, der die App

org.apache.camel.cdi.Main maincdi = new org.apache.camel.cdi.Main(){}; 
maincdi.run(); 

*/Kamel Kontext Produzent

bootet
public class CamelContextFactory { 
     @Produces 
     @ApplicationScoped 
     CamelContext customize() { 
      DefaultCamelContext context = new DefaultCamelContext(); 
      context.setName("my-custom-camel-context"); 
      return context; 
     } 

     void cleanUp(@Disposes CamelContext context) { 
      // ... 
     } 
    } 

*/einen Kontext initializer erstellen

@ApplicationScoped 
    public class ContextInitializer { 
     @Inject 
     private CamelContext ctx; 

     @Inject 
     @Any 
     private Instance<RouteBuilder> routes; 


     @PostConstruct 
     public void init() { 

      // add routes 
      for (RouteBuilder route : routes) { 
       try { 
        ctx.addRoutes(route); 

       } catch (Exception ex) { 
        Logger.getLogger(ContextInitializer.class.getName()).log(Level.SEVERE, null, ex); 
       } 
      } 
      //this.ctx.start(); 
     } 

     @PreDestroy 
     public void stop() { 
      //this.ctx.stop(); 
     } 
    } 

*/A Route-Klasse, die in 'Routen' Eigenschaft injiziert werden

public class SomeRouteClass extends RouteBuilder { 

     @Override 
     public void configure() throws Exception { 
      from("timer:foo?period=2000") 
        //.bean(testBean) 
        .process(new Processor() { 
         public void process(Exchange exchange) throws Exception { 
          System.out.println("route called from context " + exchange.getContext().getName()); 
         } 
        }); 
     } 

    } 

*/Teil der pom.xml

 <properties> 
      <deltaspike.version>1.7.2</deltaspike.version> 
      <!--<weld.version>2.3.3.Final</weld.version>--> 
      <owb.version>1.6.3</owb.version> 
     </properties> 
     <dependencyManagement> 
      <dependencies> 
       <dependency> 
        <groupId>org.apache.deltaspike.distribution</groupId> 
        <artifactId>distributions-bom</artifactId> 
        <version>${deltaspike.version}</version> 
        <type>pom</type> 
        <scope>import</scope> 
       </dependency> 
      </dependencies> 
     </dependencyManagement> 

     <dependencies> 
      <dependency> 
       <groupId>junit</groupId> 
       <artifactId>junit</artifactId> 
       <version>3.8.1</version> 
       <scope>test</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.camel</groupId> 
       <artifactId>camel-core</artifactId> 
       <version>2.18.1</version> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.camel</groupId> 
       <artifactId>camel-cdi</artifactId> 
       <version>2.18.1</version> 
      </dependency> 

      <!--delta spike core--> 
      <dependency> 
       <groupId>org.apache.deltaspike.core</groupId> 
       <artifactId>deltaspike-core-api</artifactId> 
       <version>${deltaspike.version}</version> 
       <scope>compile</scope> 
      </dependency> 

      <dependency> 
       <groupId>org.apache.deltaspike.core</groupId> 
       <artifactId>deltaspike-core-impl</artifactId> 
       <version>${deltaspike.version}</version> 
       <scope>runtime</scope> 
      </dependency> 

      <!--container control--> 
      <dependency> 
       <groupId>org.apache.deltaspike.cdictrl</groupId> 
       <artifactId>deltaspike-cdictrl-api</artifactId> 
       <version>${deltaspike.version}</version> 
       <scope>compile</scope> 
      </dependency> 

      <!--open web bean dependency--> 

      <dependency> 
       <groupId>org.apache.openwebbeans</groupId> 
       <artifactId>openwebbeans-impl</artifactId> 
       <version>${owb.version}</version> 
       <scope>runtime</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.openwebbeans</groupId> 
       <artifactId>openwebbeans-spi</artifactId> 
       <version>${owb.version}</version> 
       <scope>compile</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.geronimo.specs</groupId> 
       <artifactId>geronimo-jcdi_1.1_spec</artifactId> 
       <version>1.0</version> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.geronimo.specs</groupId> 
       <artifactId>geronimo-atinject_1.0_spec</artifactId> 
       <version>1.0</version> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.geronimo.specs</groupId> 
       <artifactId>geronimo-interceptor_1.2_spec</artifactId> 
       <version>1.0</version> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.geronimo.specs</groupId> 
       <artifactId>geronimo-annotation_1.2_spec</artifactId> 
       <version>1.0</version> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.deltaspike.cdictrl</groupId> 
       <artifactId>deltaspike-cdictrl-owb</artifactId> 
       <scope>runtime</scope> 
      </dependency> 
      <dependency> 
       <groupId>javax.enterprise</groupId> 
       <artifactId>cdi-api</artifactId> 
       <version>1.2</version> 
      </dependency> 
     </dependencies> 

=> Mein Fehler war, dass ich hatte Kamel-Kern Version 2.18.1 und camel cdi 2.16.1