0

Google AppEngineのドキュメントによると:

バックエンドは、web.xmlで定義されたサーブレットのセットをメインのアプリケーションバージョンと共有します

GoogleEngineアプリでSpringFrameworkを使用しているため、web.xmlでSpring DispatcherServletのみを定義します。私の期待では、個別のURLを持つSpringサーブレットを「バックエンドインスタンス」としてトリガーできます。ただし、指定された「サブドメイン」でスプリングサーブレットのURLを定義する方法がわかりません。

キュータスク「doStuffQueue」でバックエンド「myBackendId」を呼び出そうとしています:

Queue queue = QueueFactory.getQueue("doStuffQueue");
TaskOptions taskOptions = TaskOptions.Builder.withUrl("/doTask/")
             .param("someParam", someParam)
             .header("Host", BackendServiceFactory.getBackendService().getBackendAddress("myBackendId"))
             .method(Method.POST);
   queue.add(taskOptions);

ただし、上記のTaskOptionは、サブドメインが無視されるため、これを標準のフロントエンドインスタンスとして実行するため、このURLは次のように呼び出されます。

 myAppId.appspot.com/doTask

回避策として、私は次のようにTaskOptionを定義しようとしました:

 TaskOptions.Builder.withUrl("myBackendId.myAppId.appspot.com/doTask")

ただし、URLは/で始まる必要があるため、スキーマでは許可されていません。

4

1 に答える 1

0

あなたのコードは正しいです。注釈の定義に問題がある可能性があります。

RequestMethod.POST を使用していることを確認してください。また、たとえば「/task/doTask」でタスクの URL を開始する必要があると思います。

@RequestMapping(値 = "/タスク/doTask"、メソッド = { RequestMethod.POST })

于 2013-01-22T09:07:50.987 に答える