2016-11-08 3 views
0

У меня есть приложение для загрузки весны, которое использует стартовый веб-сайт весны. Это создает исполняемый экземпляр Tomcat и настраивает HTTP-сервер, работающий на порту. В моем маршруте верблюда я хочу использовать этот http-сервер в качестве компонента для HTTP-запросов, но я не могу понять, как его использовать. Я вижу много примеров настройки экземпляра причала и его потребления, но не было ли у меня на самом деле двух серверов http? Я только хочу иметь его. Я предполагаю, что http-сервер уже автообновлен, так как я могу использовать его с другим кодом Spring (например, RestController), и я вижу, что он запускается в моих загрузочных журналах весны.Использовать существующий сервер http в весеннем ботинке как конечная точка верблюда

@Component 
public class ExampleRoute extends RouteBuilder 
{ 
    @Override 
    public void configure() throws Exception 
    { 

     //@formatter:off 

     from(<want to take in an http request here>) 
      .log(LoggingLevel.INFO, log, "Hello World!"); 

     //@formatter:on 

    } 
} 

ответ

2

Существует пример здесь: https://github.com/camelinaction/camelinaction2/tree/master/chapter7/springboot-camel

Вы можете зарегистрировать ServletRegistrationBean, что установка верблюд Servlet с Spring ботинке.

@Bean 
ServletRegistrationBean camelServlet() { 
    // use a @Bean to register the Camel servlet which we need to do 
    // because we want to use the camel-servlet component for the Camel REST service 
    ServletRegistrationBean mapping = new ServletRegistrationBean(); 
    mapping.setName("CamelServlet"); 
    mapping.setLoadOnStartup(1); 
    // CamelHttpTransportServlet is the name of the Camel servlet to use 
    mapping.setServlet(new CamelHttpTransportServlet()); 
    mapping.addUrlMappings("/camel/*"); 
    return mapping; 
} 

Однако для Camel 2.19 мы планируем сделать это проще и OOTB: https://issues.apache.org/jira/browse/CAMEL-10416

И тогда вы можете сделать

from("servlet:foo") 
    .to("bean:foo"); 

Если HTTP URL назвать этот маршрут Camel будет http:localhost:8080/camel/foo

+1

Я пошел по пути сервлета, но не смог заставить его работать. Однако использование вашего @Bean над DID работает. В стороне: получается, что вы ДОЛЖНЫ дать серверу ServletRegistrationBean имя, и оно ДОЛЖНО быть «CamelServlet», иначе это не сработает (если я изменю его, чтобы сказать «MyCamelServlet», он не инициализируется). Это не было ясно из примеров и документации. –

+1

Это имя должно соответствовать имени, которое вы найдете здесь в таблице: http://camel.apache.org/servlet –