2

いくつかの統合パターンを実行するために、Web アプリケーションで Apache Camel を使用することを検討しています。

私が見つけた唯一の例はSpringの使用です。

Spring を使用しないサンプルはありますか?

任意の支援に感謝します

4

5 に答える 5

1

春は、ラクダのコンテキストをBeanとして保持するためによく使用されます。

管理対象Beanの他のメンバーと同様に、Camelを自由に使用してください。Webアプリのアーキテクチャによっては、Springを使用するよりも少し注意が必要な場合があります。

通常、Webアプリケーション内でシングルトンBeanを作成または再利用します(@SingletonEJBなどのさまざまな方法があります。GUICE(およびSpring ..)などのDIフレームワークもあります)。次に、次のようなラクダコンテキストを使用してインスタンス変数を作成します。 CamelContext ctx;次に、コンストラクター/シングルトンコンストラクターで、ctx = new DefaultCamelContext();

これでラクダが実行されました。JavaDSLを使用してコンポーネントとルートを追加し続けてください。とにかくSpringに半依存しているCamelのいくつかのコンポーネントがあります。JMSコンポーネント、Spring-WSなど。また、SpringなしでCamelをサーブレットコンテナにジャックするのは難しいかもしれません。しかし、それはあなたがそれのために持っているユースケースに依存します。

ここでコンテキストライフサイクルについて読んで くださいhttp://camel.apache.org/lifecycle.html

于 2012-12-20T11:32:39.327 に答える
1

しばらくの間、これに対するサポートを追加したいと考えていました。しかし、それを回避したり、チケットを記録したりしたことはありません。今日、私はチケットhttps://issues.apache.org/jira/browse/CAMEL-5906をログに記録したので、最終的には、サーベット リスナーを使用して Camel をブートストラップする方法ができました。詳しくはチケットにて。

于 2012-12-21T13:47:17.990 に答える
1

MyCamelContextInitialisingListenerこれを行うには、実装するリスナー クラスを作成する必要がありますjavax.servlet.ServletContextListener。これには、Camel の初期化ロジックが含まれます。

リスナーを登録しますWEB-INF/web.xml

<web-app>
    <listener>
        <listener-class>com.cheese.MyCamelContextInitialisingListener</listener-class>
    </listener>
<web-app>

リスナーには、次のようなものが含まれます。

private CamelContext camelContext;

@Override 
public void contextInitialized(ServletContextEvent sce) {
    camelContext = new DefaultCamelContext();
    camelContext.addRouteBuilder(new MyRouteBuilder());
    camelContext.start();
}

@Override 
public void contextDestroyed(ServletContextEvent sce) {
    camelContext.stop()
}

このクラスMyRouteBuilderRouteBuilder、Camel Java DSL を使用してルーティング ロジックを定義する、ユーザーが定義する実装になります。

春は必要ありません。

于 2013-01-01T13:22:01.123 に答える