2015-10-29 1 views
2

здесь является пружинного загрузочного жира Jar CAMEL проекту структура:Почему контекст верблюда неспособен разрешить маршрут внутри сапфира весны?

/opt/java/spring/boot/fat/jar/camel/project/ 
    ├─ menus.json 
    ├─ proxy.json 
    └─ chorke─boot─launch-1.0.00-SNAPSHOT.jar! 
     ├─ META-INF/ 
     ├─ org/springframework/boot/loader/ 
     ├─ com/chorke/boot/launch/ 
     ├─ application.properties 
     ├─ application.yml 
     ├─ log4j.xml 
     └─ lib/ 
      ├─ annotations-2.0.0.jar 
      ├─ camel-core-2.15.2.jar 
      ├─ camel-hl7-2.15.2.jar 
      ├─ camel-mina2-2.15.2.jar 
      ├─ camel-spring-2.15.2.jar 
      ├─ camel-spring-javaconfig-2.15.2.jar 
      ├─ chorke-boot-jproxy-1.0.00-SNAPSHOT.jar! 
      │ ├─ META-INF/ 
      │ │ ├─ camel/ 
      │ │ │ └─ applicationContext-camel.xml 
      │ │ └─ property/ 
      │ └─ com/chorke/boot/jproxy/ 
      │ 
      ├─ chorke-boot-webapp-1.0.00-SNAPSHOT.jar 
      ├─ chorke-comn-spring-1.0.00-SNAPSHOT.jar 
      ├─ commons-collections-3.2.1.jar 
      ├─ spring-context-4.1.6.RELEASE.jar 
      ├─ spring-core-4.1.6.RELEASE.jar 
      ├─ spring-webmvc-4.1.6.RELEASE.jar 
      ├─ ..more..more..and..more..jar 
      ├─ tomcat-embed-core-8.0.23.jar 
      └─ zuul-core-1.0.28.jar 

Вот маршрут:

package com.chorke.boot.jproxy.route; 

import org.apache.camel.builder.RouteBuilder; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

public class ProxyRoute extends RouteBuilder { 

    private static final Logger log =LoggerFactory.getLogger(ProxyRoute.class); 

    @Override 
    public void configure() throws Exception { 

     from("mina2:tcp://0.0.0.0:22210?codec=#hl7codec&sync=true").process(new Processor() { 
      public void process(Exchange exchange) throws Exception { 
       String body = exchange.getIn().getBody(String.class); 
       log.info("Port-Forwarded body:\n {}", body); 
      } 
     }).to("mina2:tcp://192.168.0.10:22210?codec=#hl7codec&sync=true").end(); 

     from("mina2:tcp://0.0.0.0:22211?codec=#hl7codec&sync=true").process(new Processor() { 
      public void process(Exchange exchange) throws Exception { 
       String body = exchange.getIn().getBody(String.class); 
       log.info("Port-Forwarded body:\n {}", body); 
      } 
     }).to("mina2:tcp://192.168.0.11:22211?codec=#hl7codec&sync=true").end(); 

    } 
} 

Вот контекст верблюд конфигурация:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:camel="http://camel.apache.org/schema/spring" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> 

    <bean id="properties" class="org.apache.camel.component.properties.PropertiesComponent"> 
     <property name="locations"> 
      <list> 
       <value>classpath:/META-INF/property/mina2.properties</value> 
      </list> 
     </property> 
    </bean> 

    <camel:camelContext id="camelContext"> 
     <camel:packageScan> 
      <camel:package>com.chorke.boot</camel:package> 
      <camel:includes>**.route.*</camel:includes> 
     </camel:packageScan> 
    </camel:camelContext> 

</beans> 

Этого верблюд маршруты работают отлично, прежде чем делать жировую банку. Когда Весенний ботинок сделать толстый кувшин файл сканер пакета верблюдов неспособен разрешить эти маршруты динамически. Это ошибка весеннего ботинка или ограничение сканер камеры для верблюда относительно fat jar файл?

У вас есть решение для такого рода сценариев?

ответ

2

spring fratjar использует его для разных целей и поэтому не поддерживается/работает.

Вы можете использовать весной componentScan вместо packageScan и объявить классы построителя маршрутов весной @Component аннотации.

См , используя contextScan раздел по адресу: http://camel.apache.org/spring.html

Смежные вопросы