My favorites | 中文(繁體) | Sign in
英文版或許有比此中譯版新的內容

上傳和管理 Java 應用程式

應用服務引擎 Java SDK 中包含可與「應用服務引擎」互動的命令。 您可以使用此命令來將應用程式的新版程式碼、設定以及動態檔案上傳到「應用服務引擎」。 您也可以使用命令來管理資料存放區索引和下載記錄資料。

上傳應用程式

如果您使用的是 Eclipse 和 Google 外掛程式,則您可以從 Eclipse 上傳應用程式。若要上傳您的應用程式,請按一下工具列的應用服務引擎部署按鈕: 應用服務引擎部署按鈕。如需詳細資訊,請參閱「Eclipse 專用的 Google 外掛程式」:

您也可以從命令提示字元上傳應用程式。若要使用其他的命令功能 (例如下載記錄),您必須從命令提示字元執行命令。要執行的命令位於 SDK 的 appengine-java-sdk/bin/ 目錄中。

如果您使用的是 Windows,則命令如下:

appengine-java-sdk\bin\appcfg.cmd [options] <action> <war-location>

如果您使用的是 Mac OS X,則命令如下:

./appengine-java-sdk/bin/appcfg.sh [options] <action> <war-location>

命令會接受要執行的動作名稱與應用程式 WAR 目錄的位置做為引數。

若要上傳應用程式,請使用 update 動作,如下所示:

./appengine-java-sdk/bin/appcfg.sh update myapp/war

這些命令為在 appengine-java-sdk/lib/appengine-tools-api.jar 中執行 Java 類別 com.google.appengine.tools.admin.AppCfg 的包裝函式程式碼,每個作業系統使用的命令都不一樣。

更新索引

當您使用 update 動作上傳應用程式時,更新包括應用程式的索引設定 (datastore-indexes.xmlgenerated/datastore-indexes-auto.xml 檔案)。 如果索引設定定義了一個「應用服務引擎」中沒有的索引,則「應用服務引擎」會建立新的索引。視資料存放區中需要在新索引中描述的資料量多寡而定,建立索引的程序可能會花費一些時間。如果應用程式所執行的查詢尚未完成建立所需的索引,查詢將產生例外狀況。

為避免此狀況,您必須確定需要新索引的應用程式新版不是應用程式的線上版本,直到索引建立完成為止。進行此動作的其中一個方法是,只要新增或變更設定中的索引,就會在 appengine-web.xml 中給予應用程式一個新的版本號碼。應用程式會上傳為新版本,但不會自動成為預設版本。當您的索引建立完成時,請使用管理控制台的「版本」區段來將預設版本變更為新版本。

另一個進行此動作的方法是,確定在應用程式上線前建立的新索引會在上傳應用程式之前,先另外上傳索引設定。若只要上傳應用程式的索引設定,請使用 update_indexes 動作:

./appengine-java-sdk/bin/appcfg.sh update_indexes myapp/war

您可以從管理控制台的「索引」區段,檢查應用程式索引的狀態。

管理排程工作

「應用服務引擎」支援排程工作 (也稱為 Cron 任務)。 您會在名為 cron.xml 的檔案中指定這些工作,並使用 update_cron 命令上傳它們:

./appengine-java-sdk/bin/appcfg.sh update_cron myapp/war

如果檔案存在,appcfg update 也會上傳 Cron 任務規格:如需 Cron 任務的詳細資料,請參閱 Cron 任務文件。

下載記錄

「應用服務引擎」會記錄應用程式所發出的訊息。「應用服務引擎」也會記載記錄中的每個要求。您可以從管理控制台的「記錄」區段,瀏覽應用程式的記錄。

如果您希望對應用程式的記錄執行更詳細的分析,您可以將記錄資料下載到您的電腦。若要將記錄下載到名為 mylogs.txt 的檔案,請使用 request_logs 動作,如下所示:

./appengine-java-sdk/bin/appcfg.sh request_logs myapp/war mylogs.txt

根據預設,命令會下載目前日曆日期 (太平洋時間午夜) 的記錄訊息,記錄層級為「資訊」或更高 (排除「偵錯」層級訊息)。 該命令會覆寫本機的記錄檔案。您可以使用命令列選項來調整天數、最低記錄層級以及要覆寫或附加到本機記錄檔案。請參考下方為這些選項提供的其他資訊。

命令列引數

AppCfg 命令是具有一組選項、動作以及動作的引數。

您可以使用下列動作:

appcfg.sh [options] update <war-location>

若已知應用程式根目錄,則可上傳應用程式的檔案。應用程式 ID 和版本會從 appengine-web.xml 檔案中取得。

appcfg.sh [options] rollback <war-location>

為指定應用程式復原部分已完成的更新。若更新被中斷,而命令報告應用程式因為鎖定而無法更新時,可以使用此命令。

appcfg.sh [options] update_indexes <war-location>

更新「應用服務引擎」資料存放區索引以加入新增的索引。如果應用程式的新版本需要已新增到索引設定的額外索引定義,您可以在上傳應用程式的新版本之前,先更新「應用服務引擎」的索引設定。上傳新版應用程式之前先花幾個小時執行此動作,將使索引在應用程式部署之前有足夠的時間來建立和提供服務。

appcfg.sh [options] request_logs <war-location> <output-file>

抓取「應用服務引擎」上執行之應用程式的記錄資料。output-file 是建立或取代的檔案名稱。若 output-file 是連字號 (-),則記錄資料會列印至主控台。下列選項適用於 request_logs

--num_days=...

要抓取的記錄資料天數,結束於目前日期的午夜 UTC。若值為 0,則會抓取所有可用的記錄。若指定 --append,則預設為 0,否則預設為 1。

--severity=...

要抓取記錄訊息的最小記錄層級。此數值是對應至記錄層級:4 為「重大」、3 為 「錯誤」、2 為「警告」、1 為「資訊」、0 為「偵錯」。將會抓取指定記錄層級及其以上的所有訊息。預設為 1 (「資訊」)。

appcfg.sh [options] help <war-location>

列印指定動作的說明訊息,然後結束。

AppCfg 命令接受所有動作的下列選項:

--email=...

應用程式管理員之 Google 帳戶的電子郵件地址,供需要登入的動作使用。若省略,且沒有之前使用命令時儲存的 cookie,命令就會提示您輸入此值。

--server=...

「應用服務引擎」伺服器主機名稱。預設為 appengine.google.com

--host=...

與遠端程序呼叫搭配使用的本機電腦主機名稱。

--sdk_root=...

應用服務引擎 Java SDK 的路徑 (如果路徑與工具位置不同)

--passin

不要將管理員登入認證儲存為 cookie;每次都要提示輸入密碼。