298.6. 例
情報: Camel 2.7 以降では、Spring Web アプリケーションで サーブレット を使用する方が簡単です。詳細については、サーブレット Tomcat の例 を参照してください。
このサンプルでは、http://localhost:8080/camel/services/hello
で HTTP サービスを公開するルートを定義します。
最初に、通常の Web コンテナーまたは OSGi サービスを介して CamelHttpTransportServlet を公開する必要があります。Web.xml
ファイルを使用して、次のように CamelHttpTransportServlet を公開します。
次に、次のようにルートを定義できます。
camel-servlet エンドポイントの相対パスを指定する HTTP トランスポートを公開されたサーブレットにバインドしていて、サーブレットのアプリケーションコンテキストパスがわからないため、camel-servlet
エンドポイントは相対パスを使用してエンドポイントの URL を指定します。クライアントは、サーブレット公開アドレス ("http://localhost:8080/camel/services") + RELATIVE_PATH("/hello")
を介して、camel-servlet
エンドポイントにアクセスできます。
298.6.1. Spring 3.x 使用時のサンプル
サーブレット Tomcat の例を参照してください。
298.6.2. Spring 2.x 使用時のサンプル
Camel/Spring アプリケーションで Servlet コンポーネントを使用する場合、多くの場合、Servlet コンポーネントの開始 後に Spring ApplicationContext をロードする必要があります。これは、ContextLoaderListener
の代わりに Spring の ContextLoaderServlet
を使用することで実現できます。その場合、次のように CamelHttpTransportServlet の後に ContextLoaderServlet
を開始する必要があります。
<web-app> <servlet> <servlet-name>CamelServlet</servlet-name> <servlet-class> org.apache.camel.component.servlet.CamelHttpTransportServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>SpringApplicationContext</servlet-name> <servlet-class> org.springframework.web.context.ContextLoaderServlet </servlet-class> <load-on-startup>2</load-on-startup> </servlet> <web-app>
298.6.3. OSGi 使用時のサンプル
Camel 2.6.0 から、このように SpringDM を使用して、CamelHttpTransportServlet を OSGi サービスとして公開できます。
次に、このサービスを camel ルートで次のように使用します。
Camel 2.6 より前のバージョンでは、Activator
を使用して、OSGi プラットフォームで CamelHttpTransportServlet を公開できます。
298.6.4. Spring-Boot での使用
Camel 2.19.0 以降、camel-servlet-starter ライブラリーは "/camel/*" コンテキストパスの下のすべての残りのエンドポイントを自動的にバインドします。次の表は、camel-servlet-starter ライブラリーで使用できる追加の設定プロパティーをまとめたものです。Camel サーブレットの自動マッピングも無効にすることができます。
Spring-Boot プロパティー | デフォルト | 説明 |
---|---|---|
camel.component.servlet.mapping.enabled |
| サーブレットコンポーネントの Spring Web コンテキストへの自動マッピングを有効にします |
camel.component.servlet.mapping.context-path |
| 自動マッピングのためにサーブレットコンポーネントによって使用されるコンテキストパス |
camel.component.servlet.mapping.servlet-name |
| Camel サーブレットの名前 |