第54章 GAE
54.1. GAE コンポーネントの概要 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Google App Engine の Apache Camel コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
重要
GAE コンポーネントは非推奨となり、JBoss Fuse の今後のリリースで削除される予定です。
チュートリアル
- Apache Camel on GAE を使用するためのスタート地点は、Google App Engine 上の Camel のチュートリアルです。
- OAuth チュートリアル は、Web アプリケーションで OAuth を実装する方法を示しています。
Google App Engine (GAE)の Apache Camel コンポーネントは
camel-gae プロジェクトの一部で、GAE の クラウドコンピューティングサービス への接続を提供します。これにより、Apache Camel インターフェイスを介してアプリケーションが GAE クラウドコンピューティング環境にアクセスできるようになります。他のクラウドコンピューティング環境のこのパターンに従うと、Apache Camel アプリケーションをあるクラウドプロバイダーから別のクラウドコンピューティングプロバイダーに移植しやすくなります。以下の表は、Google App Engine によって提供されるクラウドコンピューティングサービスとサポートする Apache Camel コンポーネントを示しています。各コンポーネントのドキュメントは、Camel Component 列のリンクに従って表示されます。
| GAE サービス | Camel コンポーネント | コンポーネントの説明 |
|---|---|---|
| URL フェッチサービス | ghttp | GAE URL フェッチサービスへの接続を提供しますが、サーブレットからメッセージを受信する場合にも使用できます。 |
| タスクキューサービス | gtask | タスクキューをメッセージキューとして使用して、GAE での非同期メッセージ処理をサポートします。 |
| メールサービス | gmail | GAE メールサービスを介したメールの送信をサポートします。メールの受信はまだサポートされていませんが、後で追加されます。 |
| memcache サービス | サポートされていません。 | |
| XMPP サービス | サポートされていません。 | |
| イメージサービス | サポートされていません。 | |
| データストアサービス | サポートされていません。 | |
| Accounts サービス | gauth glogin | これらのコンポーネントは、認証および承認のために Google Accounts API と対話します。Google アカウントは Google App Engine に固有のものではありませんが、セキュリティーを実装するために GAE アプリケーションによって使用されます。gauth コンポーネントは、Google 固有の OAuth コンシューマーを実装するために Web アプリケーションによって使用されます。このコンポーネントは、GAE 以外の Web アプリケーションを有効にするためにも使用できます。glogin コンポーネントは、GAE アプリケーションにプログラムによるログインのために Java クライアント(GAE 外)によって使用されます。GAE アプリケーションを不正アクセスから保護する方法は、セキュリティー ページを参照してください。 |
Camel コンテキスト リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Google App Engine での
SpringCamelContext の設定は、Camel 2.1 以降のバージョンによって異なります。この問題は、http://camel.apache.org/schema/spring の Camel 固有の Spring 設定 XML スキーマを使用するには JAXB が必要で、Camel 2.1 は JAXB をサポートしない Google App Engine SDK バージョンに依存することです。この制限は、Camel 2.2 以降から削除されました。
javax.management パッケージは App Engine JRE のホワイトリストに含まれていないため、JMX は必ず無効にする必要があります。
Apache Camel 2.1 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
camel-gae 2.1 には、以下の CamelContext 実装が同梱されています。
org.apache.camel.component.gae.context.GaeDefaultCamelContext(org.apache.camel.impl.DefaultCamelContextの拡張)org.apache.camel.component.gae.context.GaeSpringCamelContext(org.apache.camel.spring.SpringCamelContextを拡張)
いずれも起動前に JMX を無効にします。
GaeSpringCamelContext は、以下の例のようにルートビルダーを追加するセッターメソッドを追加で提供します。
appctx.xml
<beans xmlns="http://www.springframework.org/schema/beans"
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-2.5.xsd">
<bean id="camelContext"
class="org.apache.camel.component.gae.context.GaeSpringCamelContext">
<property name="routeBuilder" ref="myRouteBuilder" />
</bean>
<bean id="myRouteBuilder"
class="org.example.MyRouteBuilder">
</bean>
</beans>
または、ルートビルダーの一覧を設定するには、
GaeSpringCamelContext の routeBuilders プロパティーを使用します。この方法では、JAXB を必要とせずに SpringCamelContext を GAE に設定できます。
Apache Camel 2.2 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.2 以降では、アプリケーションは
SpringCamelContext を設定するために http://camel.apache.org/schema/spring namespace を使用できますが、JMX を無効にする必要があります。以下は例です。
appctx.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<camel:camelContext id="camelContext">
<camel:jmxAgent id="agent" disabled="true" />
<camel:routeBuilder ref="myRouteBuilder"/>
</camel:camelContext>
<bean id="myRouteBuilder"
class="org.example.MyRouteBuilder">
</bean>
</beans>
web.xml リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
GAE で Apache Camel を実行するには、
camel-servlet から CamelHttpTransportServlet を使用する必要があります。以下の例は、Spring アプリケーションコンテキスト XML ファイルとともにこのサーブレットを設定する方法を示しています。
web.xml
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>CamelServlet</servlet-name>
<servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>appctx.xml</param-value>
</init-param>
</servlet>
<!--
Mapping used for external requests
-->
<servlet-mapping>
<servlet-name>CamelServlet</servlet-name>
<url-pattern>/camel/*</url-pattern>
</servlet-mapping>
<!--
Mapping used for web hooks accessed by task queueing service.
-->
<servlet-mapping>
<servlet-name>CamelServlet</servlet-name>
<url-pattern>/worker/*</url-pattern>
</servlet-mapping>
</web-app>
Spring アプリケーションコンテキスト XML ファイルの場所は、
contextConfigLocation init パラメーターによって指定されます。appctx.xml ファイルはクラスパス上にある必要があります。サーブレットマッピングは、Google App Engine にデプロイする際に、http://<appname>.appspot.com/camel/... で Apache Camel アプリケーションにアクセスできるようにします。< appname > は実際の GAE アプリケーション名に置き換えます。2 つ目のサーブレットマッピングは、Web フック を介してバックグラウンド処理のためにタスクキューサービスによって内部的に使用されます。このマッピングは gtask コンポーネントに関連し、詳細に説明されています。