2009年6月11日木曜日

GAE/Jでローカル実行時にApiProxyLocalから取得できるサービス一覧メモ

テスト時に必要ですよね。

ApiProxyそのもの

com.google.apphosting.api.ApiProxy.Delegate
下記ApiProxyLocalの親インターフェース
com.google.appengine.tools.development.ApiProxyLocal
上記を継承したインターフェース。getService()メソッドもこのインターフェースで定義されている。
com.google.appengine.tools.development.ApiProxyLocalImpl
ApiProxyLocalの実装

ApiProxyから取得するサービス

com.google.appengine.tools.development.LocalRpcService
ApiProxy#getService()で返るインターフェースの型。以下のサービスは全部これの実装。これを実装したクラスのgetPackage()が返す値が、ApiProxyLocal.getService()で指定すべき値。
ローカル用のサービスの実装
com.google.appengine.api.datastore.dev.LocalDatastoreService
データストアサービスの実装。getPackage()が返す値は"datastore_v3"
com.google.appengine.api.users.dev.LocalUserService
ユーザサービスの実装。getPackage()が返す値は"user"
com.google.appengine.api.urlfetch.dev.LocalURLFetchService
URL Fetchサービスの実装。getPackage()が返す値は"urlfetch"
com.google.appengine.api.mail.dev.LocalMailService
Mailサービス。getPackage()が返す値は"mail"
com.google.appengine.api.memcache.dev.LocalMemcacheService
memcacheサービス。getPackage()が返す値は"memcache"
com.google.appengine.api.images.dev.LocalImagesService
画像サービス。getPackage()が返す値は"images"

サービスの実装を指定している場所

正式なGoogleのSDKに含まれるjarは使ってないからわからんけども、mvnsearchのリポジトリにあるjarでいぅと"appengine-1.0-stubs-1.2.1.jar"の中の"META-INF/services/com.google.appengine.tools.development.LocalRpcService"で以下のように指定されている。

com.google.appengine.api.users.dev.LocalUserService com.google.appengine.api.datastore.dev.LocalDatastoreService
com.google.appengine.api.memcache.dev.LocalMemcacheService
com.google.appengine.api.urlfetch.dev.LocalURLFetchService
com.google.appengine.api.mail.dev.LocalMailService
com.google.appengine.api.images.dev.LocalImagesService

ちなみに、Webコンテナも同様にサービスとして実行時に解決されていて、インターフェースは"com.google.appengine.tools.development.ContainerService"で、定義は"appengine-api-1.0-runtime-1.2.1.jar(例のごとくmvnsearchのリポジトリ内のjarでの話)の、"META-INF/services/com.google.appengine.tools.development.ContainerService"で以下のように定義されている。

com.google.appengine.tools.development.JettyContainerService

コメントを投稿