この問題はdevモード(Eclipse ...)でテストされ、発生しています。アプリエンジンの動的バックエンドがdevモードで正常に動作しない
私は(backends.xml中)1構成されたバックエンドがあります:あなたはそれを明示的に「動的」に設定していますご覧のよう
<backends>
<backend name="example">
<class>B8</class>
<options>
<instances>1</instances>
<public>false</public>
<dynamic>true</dynamic>
</options>
</backend>
</backends>
を。
これは私のweb.xmlです:
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" 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>backend_test</servlet-name>
<servlet-class>BackendTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>backend_test</servlet-name>
<url-pattern>/_ah/start</url-pattern>
</servlet-mapping>
</web-app>
...バックエンドに普通のサーブレットのエントリ・ポイント。
そしてここで、バックエンドのJavaコードです:私が正しくthis doc lineを理解していれば
INFO: The server is running at http://localhost:8888/
Backend started!
Backend terminating!
:今
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class BackendTest extends HttpServlet
{
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
System.out.println("Backend started!");
// ............
System.out.println("Backend terminating!");
}
}
、私はF11を押すと、アプリのデバッグを開始、これはコンソールで出力されます私が/_ah/start
(http)を要求するまで、開始してはいけません。 それははっきり言う:
あなたは、動的バックエンドを起動すると、App Engineは、それが トラフィックを受け入れることができますが、それはその最初のユーザー要求を受け取る まで/ _ah /起動要求がインスタンスに送信されていません。
もう一つの副作用は、この問題に関連し、バックエンドはなることはありませんように見えるということです「停止」(私はhttp://127.0.0.1:8888/_ah/admin/backendsで管理エリアに見るように)、私はそれが「実行中」状態のまま意味。
終了した後(上記のコードで、コンソールに明示的に表示されているように)、数分後にシャットダウンしないでください。 (私は約20分待っています)。
私は間違っていますか?
ところで、私の最終的な目標は、「タスク」の実行と同様に、「バックエンド」コンテキスト内でいくつかのコードを実行することです。私はCPU/RAMの電力と無限の限界のために "バックエンド"を望んでいます。
私に教えてください。 ありがとう!
私がこれを正しく理解している場合 - https://developers.google.com/appengine/docs/java/backends/overview#Startupに従って/ _ah/startを呼び出すことはできません。バックエンドのインスタンスが最初のリクエスト(動的バックエンド用)を受け取ったときにアプリエンジンによって呼び出されます –