2016-11-08 2 views
0

私は春の起動スターターWebを使用する春の起動アプリケーションを持っています。実行中のTomcatインスタンスが作成され、ポート上で実行されているhttpサーバが設定されます。私のラクダのルートでは、httpリクエストのコンポーネントとしてこのhttpサーバを使いたいのですが、どのように利用するのか分かりません。私は桟橋のインスタンスを設定して消費する多くの例を見ていますが、実際には2つのhttpサーバを稼働させていませんか?私は1つだけ持っていたい。私は、他のスプリングコード(RestControllerなど)と一緒にHTTPサーバーから消費することができるので、httpサーバーはすでにオートワイヤードされていると仮定しています。キャメルエンドポイントとして春の起動時に既存の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そのセットアップ春ブーツとキャメルサーブレットを登録します。

@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; 
} 

しかしキャメル2.19のために、私たちは、これは単純でOOTB作るの計画:https://issues.apache.org/jira/browse/CAMEL-10416

そして、HTTP URLはキャメルルートはhttp:localhost:8080/camel/foo

になることを呼び出すためにどこに、あなたは

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

を行うことができます

+1

私はサーブレットのパスをダウンしていましたが、動作させることができませんでした。しかし、あなたの@BeanをDIDの上で使用するようにしてください。さて、ServletRegistrationBeanに名前を付ける必要があります。「CamelServlet」でなければなりません。そうでないと、「MyCamelServlet」という名前を変更しても初期化されません。それは例と文書からは分かりませんでした。 –

+1

その名前は、次の表の名前と一致している必要があります。http://camel.apache.org/servlet –

関連する問題