




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、使用入門:Java本輔導手冊介紹了如何用 Google App Engine 開發和部署簡單的 Java 項目。留言簿這一示例項目演示了如何使用 Java 運行時環境,以及如何使用一些 App Engine 服務,包括數據存儲區和 Google 帳戶。本教程包含以下部分:· 簡介 · 安裝 Java SDK · 創建項目 · 使用用戶服務 · 使用 JSP · 使用帶有 JDO 的數據存儲區 · 使用靜態文件 · 上傳應用程序 簡介歡迎使用 Google App Engine!創建 App Engine 應用程序非
2、常簡單,只需幾分鐘時間,而且可以免費開始使用:立即上傳您的應用程序并與用戶共享,不需要支付費用也不需要承擔什么義務。Google App Engine 應用程序可用 Java 或 Python 編程語言編寫。本輔導手冊涉及 Java。如果您更習慣使用 Python 來構建應用程序,請參閱入門指南:Python。在本輔導手冊中,您將學習如何:· 使用標準 Java 網絡技術(如 servlet 和 JSP)構建 App Engine 應用程序 · 使用和不使用 Eclipse 創建 App Engine Java 項目 · 使用 Eclipse Google 插件進
3、行 App Engine 開發 · 將 App Engine 數據存儲區和 Java 數據對象 (JDO) 標準接口配合使用 · 將 App Engine 應用程序與 Google 帳戶集成以進行用戶驗證 · 將應用程序上傳到 App Engine 在本輔導手冊結束前,您將實現一個可運行的應用程序:可讓用戶發布消息到公共留言板的簡單留言簿。下一步.要開始開發 Google App Engine Java 應用程序,請下載并安裝 App Engine Java 軟件開發工具包及相關組件。繼續轉至安裝 Java SDK。安裝 Java SDK您可以使用 App Eng
4、ine Java 軟件開發工具包 (SDK) 開發和上傳 Google App Engine 的 Java 應用程序。SDK 包含網絡服務器軟件,您可在自己的計算機上運行該軟件以測試您的 Java 應用程序。服務器可模擬所有的 App Engine 服務,其中包括數據存儲區的本地版本、Google 帳戶以及使用 App Engine API 從您的計算機抓取網址和發送電子郵件的功能。獲取 JavaGoogle App Engine 支持 Java 5 和 Java 6。當您的 Java 應用程序在 App Engine 上運行時,它將使用 Java 6 虛擬機 (JVM) 和標準庫運行。理想情
5、況下,您應使用 Java 6 編譯和測試應用程序,以確保本地服務器的工作方式與 App Engine 相似。對于不易獲得 Java 6 的開發人員(如使用 Mac OS X 的開發人員),App Engine SDK 也兼容 Java 5。可將通過 Java 5 生成的編譯類和 JAR 上傳到 App Engine。根據需要下載并安裝適用于您的平臺的 Java SE 開發工具包 (JDK)。Mac 用戶可訪問 Apple Java 開發人員網站,以下載可用于 Mac OS X 的最新版 Java 開發人員工具包。JDK 安裝完成后,可從命令提示符(對于 Windows,為“命令提示符”;對于
6、Mac OS X,為“終端”)運行下列命令以驗證您能夠運行命令并確定所安裝的版本。如果您已安裝 Java 6,則這些命令將報告一個類似于 1.6.0 的版本號。如果您已安裝 Java 5,則版本號將與 1.5.0 類似。java -versionjavac -version使用 Eclipse 和 Eclipse Google 插件如果您使用的是 Eclipse 開發環境,則開發、測試和上傳 App Engine 應用程序最簡便的方法是使用 Eclipse Google 插件。該插件包含完全在 Eclipse 中生成、測試和部署應用程序所需的所有工具。該插件適用于 3.3 版和 3.4 版的
7、Eclipse。您可以使用 Eclipse 的“軟件更新”功能安裝該插件。軟件安裝位置如下:· 用于 Eclipse 3.3 (Europa) 的 Eclipse Google 插件: · 用于 Eclipse 3.4 (Ganymede) 的 Eclipse Google 插件: 有關如何使用“軟件更新”安裝插件以及如何創建新項目的詳細信息,請參閱使用 Google Eclipse 插件。獲取 SDK如果您正在使用 Eclipse 和 Google 插件,則可通過 Eclipse 使用“軟件更新”功能安裝 App Engine SDK。如果您還未安裝,則可使用上述位置安裝
8、“Google App Engine Java SDK”組件。如果您未使用 Eclipse 或 Google 插件,則可以下載 Zip 檔案形式的 App Engine Java SDK。下載 App Engine Java SDK。將檔案解壓縮到硬盤的適當位置。注意:解壓縮檔案將創建一個目錄,目錄名與 appengine-java-sdk-X.X.X 相似,其中 X.X.X 是 SDK 版本號。在本文檔中,將該目錄稱為 appengine-java-sdk/。解壓縮后,您可以重命名該目錄。嘗試演示應用程序App Engine Java SDK 在 demos/ 目錄下包含有多個演示應用程序。
9、您將在本輔導手冊中創建的留言簿應用程序的最終版位于 guestbook/ 目錄下。該演示已進行了預編譯,您可以立即進行嘗試。如果您正在使用 Eclipse,則 SDK 位于 Eclipse 安裝目錄的 plugins/com.google.appengine.eclipse.sdkbundle_VERSION/ 下,其中 VERSION 是 SDK 的版本標識符。從命令行將當前工作目錄更改為該目錄,以運行下列命令。如果您使用的是 Mac OS X 或 Linux,則可能必須賦予命令文件可執行權限,然后才能運行它們(例如使用命令 chmod u+x dev_appserver.sh)。如果您使用
10、的是 Windows,則可通過在命令提示符處運行下列命令在開發服務器中啟動留言簿演示。appengine-java-sdkbindev_appserver.cmd appengine-java-sdkdemosguestbookwar如果您使用的是 Mac OS X 或 Linux,則可運行下列命令:./appengine-java-sdk/bin/dev_appserver.sh appengine-java-sdk/demos/guestbook/war開發服務器將啟動,并在端口 8080 上監聽請求。在瀏覽器中訪問以下網址:· http:/localhost:8080/有關從命
11、令行運行網絡開發服務器(包括如何更改其使用的端口)的詳細信息,請參閱開發網絡服務器參考。下一步.您可以通過該開發環境在您的計算機上開發并測試完整的 App Engine 應用程序。讓我們從一個簡單的項目開始。繼續轉至創建項目。創建項目App Engine Java 應用程序使用 Java Servlet 標準與網絡服務器環境交互。應用程序的文件(包括已編譯的類、JAR、靜態文件和配置文件)使用 Java 網絡應用程序的 WAR 標準布局組織在目錄結構中。您可以使用任何想用的開發過程來開發網絡 Servlet 并生成 WAR 目錄。(SDK 目前尚不支持 WAR 檔案文件。)項目目錄對于本教程,
12、我們將對所有項目文件使用一個名為 Guestbook/ 的目錄。名為 src/ 的子目錄包含 Java 源代碼,名為 war/ 的子目錄包含以 WAR 格式組織的完整應用程序。我們的生成過程會編譯 Java 源文件,并將編譯的類放在 war/ 中的適當位置。完整的項目目錄如下:Guestbook/ src/ .Java source code. META-INF/ .other configuration. war/ .JSPs, images, data files. WEB-INF/ .app configuration. lib/ .JARs for libraries. classes
13、/ piled classes.如果使用的是 Eclipse,則通過點擊工具欄上的“新建網絡應用程序項目”按鈕創建一個新的項目: 賦予項目 Guestbook 的“項目名稱”以及 guestbook 的“包”。取消選中“使用 Google Web 工具包”,并確保選中了“使用 Google App Engine”。有關詳細信息,請參閱使用 Eclipse Google 插件。向導將創建目錄結構,以及下文說明的文件。如果您沒有使用 Eclipse,則創建上文所述的目錄結構。當您閱讀本部分中介紹的每個文件時,可以使用給定的位置和名稱創建文件。您還可以在 appengine-java-sdk/dem
14、os/new_project_template/ 目錄中復制 SDK 內含的新的項目模板。Servlet 類App Engine Java 應用程序使用 Java Servlet API 與網絡服務器交互。HTTP Servlet 是處理和響應網絡請求的應用程序類。該類擴展 javax.servlet.GenericServlet 類或 javax.servlet.http.HttpServlet 類。我們的留言簿項目從一個 Servlet 類開始,這是一個簡單的顯示消息的 Servlet。如果您沒有使用 Eclipse 插件,則創建路徑為 src/guestbook/ 的目錄,然后創建下文介
15、紹的 Servlet 類文件。在 src/guestbook/ 目錄中,名為 GuestbookServlet.java 的文件具有以下內容:package guestbook; import java.io.IOException; import javax.servlet.http.*; public class GuestbookServlet extends HttpServlet public void doGet(HttpServletRequest req, HttpServletRes
16、ponse resp) throws IOException resp.setContentType("text/plain"); resp.getWriter().println("Hello, world"); web.xml 文件當網絡服務器收到請求時,其使用一個稱為“網絡應
17、用程序部署描述符”的配置文件決定調用哪個 Servlet 類。此文件名為 web.xml,位于 WAR 中的 war/WEB-INF/ 目錄中。WEB-INF/ 和 web.xml 是 Servlet 規范的一部分。在 war/WEB-INF/ 目錄中,名為 web.xml 的文件具有以下內容:<?xml version="1.0" encoding="utf-8"?><!DOCTYPE web-app PUBLIC "-/Sun Microsystems, Inc./DTD Web Application 2.3/EN&qu
18、ot; "<web-app xmlns=" version="2.5"> <servlet> <servlet-name>guestbook</servlet-name> <servlet-class>guestbook.GuestbookServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>guestbook</servlet-name> <url-
19、pattern>/guestbook</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list></web-app>此 web.xml 文件聲明名為 guestbook 的 Servlet,并將其映射到 URL 路徑 /guestbook。其還稱,每當用戶抓取一個沒有映射到 Servlet 并表示應用程序的 WAR 內的目錄路徑的網址路徑時
20、,服務器應檢查該目錄中是否存在名為 index.html 的文件,如果發現存在該文件則提供該文件。appengine-web.xml 文件App Engine 需要一個額外的配置文件,以指出如何部署和運行應用程序。此文件名為 appengine-web.xml,并和 web.xml 一起位于 WEB-INF/ 中。其包括您的應用程序的注冊 ID(Eclipse 創建時 ID 留空,以便您以后填寫)、應用程序的版本號以及應作為靜態文件(例如圖像和 CSS)以及資源文件(例如 JSP 和其他應用程序數據)處理的文件列表。在 war/WEB-INF/ 目錄中,名為 appengine-web.xml
21、 的文件具有以下內容:<?xml version="1.0" encoding="utf-8"?><appengine-web-app xmlns=" <application></application> <version>1</version></appengine-web-app>appengine-web.xml 專用于 App Engine,且不是 Servlet 標準的一部分。您可以在 SDK 中的 appengine-java-sdk/docs/ 目錄中
22、找到描述此文件的格式的 XML 架構文件。有關此文件的詳細信息,請參閱配置應用程序。運行項目App Engine SDK 包括一個您可用來測試您的應用程序的網絡服務器應用程序。服務器模擬 App Engine 環境和服務,其中包括沙盒限制、數據存儲區和服務。如果您正在使用 Eclipse,則您可以在 Eclipse 調試器中啟動開發服務器。在運行菜單中,選擇調試方式 > 網絡應用程序。(如果您沒有看到此菜單選項,則選擇窗口菜單 > 重置視景.,點擊確定,然后再次嘗試運行菜單。)有關創建調試配置的詳細信息,請參閱使用 Eclipse Google 插件。如果沒有使用 Eclipse,
23、請參閱使用 Apache Ant 以獲取可生成項目并啟動開發服務器的生成腳本。要以此生成腳本啟動服務器,請輸入下列命令:ant runserver。要停止服務器,請按 Control-C。測試應用程序啟動服務器,然后在您的瀏覽器中訪問以下網址:· http:/localhost:8080/guestbook服務器調用 Servlet,并在瀏覽器中顯示消息。下一步.您現在完成了 App Engine 應用程序!您可以立即部署該簡單的問候并與全球用戶共享。此應用程序向所有用戶顯示一條通用問候。讓我們添加功能以自定義針對每位使用 Google 帳戶的訪問者的問候。繼續轉至使用用戶服務。使用
24、用戶服務Google App Engine 提供基于 Google 基礎架構的多種有用服務,可由使用 SDK 隨附的庫的應用程序訪問。其中一種服務是用戶服務,可使應用程序與 Google 用戶帳戶集成。使用用戶服務,用戶可以使用已有的 Google 帳戶登錄到您的應用程序。我們來使用用戶服務個性化此應用程序的問候語。使用 User按照指示將 src/guestbook/GuestbookServlet.java 編輯如下:package guestbook; import java.io.IOException; import javax.servlet.htt
25、p.*; import com.google.appengine.api.users.User; import com.google.appengine.api.users.UserService; import com.google.appengine.api.users.UserServiceFactory; public class GuestbookServlet extends HttpServlet public void doGet(HttpServletRequest req, Http
26、ServletResponse resp) throws IOException UserService userService = UserServiceFactory.getUserService(); User user = userService.getCurrentUser(); &
27、#160; if (user != null) resp.setContentType("text/plain"); resp.getWriter().println("Hello, " + user.getNickname(); else
28、0; resp.sendRedirect(userService.createLoginURL(req.getRequestURI(); 如果使用的是 Eclipse 并且您的開發服務器正在調試器中運行,當您將更改保存到此文件時,Eclipse 將自動編譯新代碼,然后嘗試將新代碼插入已經運行的服務器中。無需重新啟動,對類、JSP、靜態文件和 appengine-web.xml 做出的更改將立即反映在運行的服務器上。如果您更改 web.xml 或其他配
29、置文件,您必須停止并啟動服務器來查看更改。如果使用的是 Ant,您必須停止服務器并重新構建項目來查看對源代碼做出的更改。對 JSP 和靜態文件所做的更改無需重新啟動服務器。必要時,重新構建項目和重新啟動服務器。通過在瀏覽器中訪問 servlet 網址測試應用程序:· http:/localhost:8080/guestbook服務器沒有顯示消息,而是提示您輸入電子郵件地址。輸入任何電子郵件地址(例如 alfred),然后點擊“登錄”。應用程序將顯示消息,此時包含您輸入的電子郵件地址。GuestbookServlet 類的新代碼使用用戶 API 來檢查用戶是否使用 Google 帳戶登
30、錄。如果不是,將用戶重定向至 Google 帳戶登錄屏幕。userService.createLoginURL(.) 返回登錄屏幕的網址。登錄功能可通過傳遞到 createLoginURL(.) 的網址(在這種情況下是當前頁面的網址)將用戶重定向回應用程序。開發服務器了解如何模擬 Google 帳戶登錄設施。當在您的本地計算機上運行時,重定向轉至您可以輸入任何電子郵件地址的頁面來模擬一個帳戶登錄。當在 App Engine 上運行時,重定向轉至實際 Google 帳戶屏幕。現在,您登錄到您的測試應用程序。如果重新載入該頁面,將再次顯示該消息。為允許用戶退出,提供了一個由 createLogou
31、tURL() 方法生成的指向退出屏幕的鏈接。請注意,退出服務將使用戶退出所有 Google 服務。下一步.既然已知如何識別用戶,我們可以邀請用戶發布消息到留言簿。讓我們使用 JavaServer 頁面 (JSP) 為此應用程序設計一個用戶界面。繼續轉至使用 JSP。使用 JSP雖然我們可以直接從 Java servlet 代碼輸出用戶界面的 HTML,但隨著 HTML 變得復雜,這將變得難以維護。最好使用模板系統,在模板系統中,用戶界面在單獨的文件中設計和實現,且使用占位符和邏輯來插入應用程序提供的數據。有許多可用于 Java 的模板系統,任何系統可都可和 App Engine 配合使用。在本
32、輔導手冊中,將使用 JavaServer 頁面 (JSP) 來實現留言簿的用戶界面。JSP 是 servlet 標準的一部分。App Engine 自動在應用程序的 WAR 中編譯 JSP 文件,并將其映射到網址路徑。你好,JSP!我們的留言簿應用程序將字符串寫入到輸出流,但是這也可以編寫為 JSP。讓我們從將示例的最新版本移植到 JSP 開始。在 war/ 目錄中,創建一個名為 guestbook.jsp 的文件,內容如下:<% page contentType="text/html;charset=UTF-8" language="java"
33、%><% page import="com.google.appengine.api.users.User" %><% page import="com.google.appengine.api.users.UserService" %><% page import="com.google.appengine.api.users.UserServiceFactory" %><html> <body><% UserService userService = User
34、ServiceFactory.getUserService(); User user = userService.getCurrentUser(); if (user != null) %><p>Hello, <%= user.getNickname() %>! (You can<a href="<%= userService.createLogoutURL(request.getRequestURI() %>">sign out</a>.)</p><% else %><p>
35、;Hello!<a href="<%= userService.createLoginURL(request.getRequestURI() %>">Sign in</a>to include your name with greetings you post.</p><% %> </body></html>默認情況下,war/ 或名稱以 .jsp 結尾的子目錄(除 WEB-INF/ 以外)中的文件都自動映射到網址路徑。網址路徑是指向 .jsp 文件的路徑,包括文件名。此 JSP 將自動映射
36、到網址 /guestbook.jsp。對于留言簿應用程序,我們希望這是應用程序的主頁,在訪問網址 / 時顯示。執行該操作的一個簡單方式是在 web.xml 中聲明 guestbook.jsp 是該路徑的“歡迎”servlet。編輯 war/WEB-INF/web.xml 并替換 <welcome-file-list> 中的當前 <welcome-file> 元素。確保從列表中刪除 index.html,因為靜態文件優先于 JSP 和 servlet。 <welcome-file-list> <welcome-file>guestbook.jsp&
37、lt;/welcome-file> </welcome-file-list>提示:如果使用的是 Eclipse,編輯器可在“設計”模式下打開此文件。要將此文件作為 XML 編輯,請在框架的底部選擇“源”標簽。停止然后啟動開發服務器。訪問以下網址:· http:/localhost:8080/應用程序顯示 guestbook.jsp 的內容,如果用戶已登錄,則包括用戶昵稱。當首次載入 JSP 時,開發服務器將 JSP 轉換為 Java 源代碼,然后將 Java 源編譯為 Java 字節碼。Java 源和編譯的類保存到臨時目錄中。如果原 JSP 文件發生更改,則開發服務
38、器將自動重新生成和編譯 JSP。當將應用程序上傳到 App Engine 時,SDK 將所有 JSP 編譯為字節碼,并僅上傳字節碼。當您的應用程序在 App Engine 上運行時,該應用程序將使用編譯的 JSP 類。留言簿表單留言簿應用程序將需要一個網絡表單供用戶發布新的問候,以及一種處理該表單的方式。表單的 HTML 將進入 JSP。表單的目標將是由新的 servlet 類 SignGuestbookServlet 處理的新的網址 /sign。SignGuestbookServlet 將處理表單,然后將用戶的瀏覽器重定向回 /guestbook.jsp。現在,新的 servlet 僅將發布
39、的消息寫入到日志中。編輯 guestbook.jsp,并在緊靠結束 </body> 標簽的上方放置以下行: . <form action="/sign" method="post"> <div><textarea name="content" rows="3" cols="60"></textarea></div> <div><input type="submit" value=&quo
40、t;Post Greeting" /></div> </form> </body></html>在 guestbook 包中新建一個名為 SignGuestbookServlet 的類。(非 Eclipse 用戶,在 src/guestbook/ 目錄中創建 SignGuestbookServlet.java 文件。)為源文件提供以下內容:package guestbook; import java.io.IOException; import java.util.logging.Logger;
41、160;import javax.servlet.http.*; import com.google.appengine.api.users.User; import com.google.appengine.api.users.UserService; import com.google.appengine.api.users.UserServiceFactory; public class SignGuestbookServlet extends HttpServlet private static
42、 final Logger log = Logger.getLogger(SignGuestbookServlet.class.getName(); public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException UserService userS
43、ervice = UserServiceFactory.getUserService(); User user = userService.getCurrentUser(); String content = req.getParameter("content"); if (content = null)
44、0; content = "(No greeting)" if (user != null) ("Greeting posted by user " + user.getNickname() + ": " + content);
45、 else ("Greeting posted anonymously: " + content); resp.sendRedirect("/intl/zh-CN/guestbook.jsp"); 編輯 war/WEB-INF/web.
46、xml,添加以下行來聲明 SignGuestbookServlet servlet 并將其映射到 /sign 網址:<web-app xmlns=" version="2.5"> . <servlet> <servlet-name>sign</servlet-name> <servlet-class>guestbook.SignGuestbookServlet</servlet-class> </servlet> <servlet-mapping> <servle
47、t-name>sign</servlet-name> <url-pattern>/sign</url-pattern> </servlet-mapping> .</web-app>此新的 servlet 使用 java.util.logging.Logger 類將消息寫入日志中。您可以使用 perties 文件和在應用程序的 appengine-web.xml 文件中設置的系統屬性來控制此類的行為。如果使用的是 Eclipse,您創建的應用程序在應用程序的 src/ 中具有此文件的默認版本,以及相應系統屬性
48、。如果您沒有使用 Eclipse,您必須手動設置日志記錄器配置文件。將示例文件從 SDK appengine-java-sdk/config/user/perties 復制到您的應用程序的 war/WEB-INF/ 目錄中。然后編輯應用程序的 war/WEB-INF/appengine-web.xml 文件,如下所示:<appengine-web-app xmlns=" . <system-properties> <property name="java.util.logging.config.file" value=
49、"WEB-INF/perties"/> </system-properties></appengine-web-app>servlet 日志消息使用 INFO 日志級別(使用 ())。默認日志級別是 WARNING,其禁止輸出 INFO 消息。要更改 guestbook 包中的所有類的日志級別,請編輯 perties 文件并為 guestbook.level 添加一個條目,如下所示:.level = WARNINGguestbook.level = INFO.提示:當您的應用程序在 A
50、pp Engine 上運行時使用 java.util.logging.Logger API 記錄消息時,App Engine 記錄這些消息并使其可在管理控制臺上瀏覽,并可使用 AppCfg 工具下載。管理控制臺允許您按日志級別瀏覽消息。重新構建并重新啟動,然后測試 http:/localhost:8080/。將顯示表單。在表單中輸入一些文本,然后提交。瀏覽器將表單發送至應用程序,然后重定向回空表單。您輸入的問候數據將由服務器記錄到控制臺中。下一步.我們有提示用戶輸入問候的用戶界面。現在,我們需要一種方法來記住用戶發布的問候,并將其顯示給其他訪問者。為此,我們將使用 App Engine 數據存
51、儲區。繼續轉至將數據存儲區與 JDO 配合使用。與 JDO 配合使用數據存儲區將數據存儲在可擴展的網絡應用程序中可能會非常復雜。用戶可在指定時間與任意數量的網絡服務器進行交互,并且該用戶的下一個請求可能會轉到與處理上一個請求不同的網絡服務器上。所有網絡服務器都需要與同樣分布在多個機器(可能位于世界各地的不同位置)上的數據進行交互。有了 Google App Engine,您就不必再為上述任何問題擔心了。App Engine 的基礎架構通過一個簡單的 API 就能處理好數據的所有分布、復制和負載平衡,同時您還可獲得一個功能強大的查詢引擎和事務。App Engine 數據存儲區是由具有以下兩種 A
52、PI 的 App Engine 所提供的若干服務之一:標準 API 和低級 API。通過使用標準 API,您可以更輕松地將應用程序移植到其他托管環境和其他數據庫技術(如果您需要這么做)。標準 API 可將應用程序與 App Engine 服務“分離”。App Engine 服務還提供了低級 API,可以直接顯示服務功能。您可以使用低級 API 來實現新的適配器接口,或者就直接在應用程序中使用 API。App Engine 對數據存儲區的以下兩種不同 API 標準都提供了支持:Java 數據對象 (JDO) 和 Java 持久性 API (JPA)。這些接口是由 DataNucleus 訪問平臺
53、(若干 Java 持久性標準的開源實現)提供的,具有用于 App Engine 數據存儲區的適配器。對于留言簿,我們將使用 JDO 接口來檢索和發布由用戶留下的消息。設置 DataNucleus 訪問平臺訪問平臺需要配置文件來指示其使用 App Engine 數據存儲區作為 JDO 實現的后端。在最終 WAR 中,該文件的名稱為 jdoconfig.xml,且位于 war/WEB-INF/classes/META-INF/ 目錄中。如果您使用的是 Eclipse,則該文件已創建為 src/META-INF/jdoconfig.xml。當您構建項目時,該文件自動復制到 war/WEB-INF/c
54、lasses/META-INF/ 中。如果您沒有使用 Eclipse,可直接創建 war/WEB-INF/classes/META-INF/ 目錄,或者在構建過程中創建該目錄,然后從其他位置復制配置文件。使用 Apache Ant 中所述的 Ant 構建腳本從 src/META-INF/ 復制該文件。jdoconfig.xml 文件應具有以下內容:<?xml version="1.0" encoding="utf-8"?><jdoconfig xmlns=" xmlns:xsi="/2
55、001/XMLSchema-instance" xsi:noNamespaceSchemaLocation=" <persistence-manager-factory name="transactions-optional"> <property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory&qu
56、ot;/> <property name="javax.jdo.option.ConnectionURL" value="appengine"/> <property name="javax.jdo.option.NontransactionalRead" value="true"/> <property name="javax.jdo.option.NontransactionalWrite" value="true"/> <
57、property name="javax.jdo.option.RetainValues" value="true"/> <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/> </persistence-manager-factory></jdoconfig>JDO 類增強當您創建 JDO 類時,使用 Java 批注來說明應如何將實例存儲在數據存儲區中,以及應如何在從數據存
58、儲區檢索實例時重新創建實例。訪問平臺使用后編譯處理步驟將數據類連接到實現,DataNucleus 稱之為使類“增強”。如果您使用的是 Eclipse 和 Google 插件,則該插件自動將 JDO 類增強步驟作為構建過程的一部分來執行。如果您使用的是使用 Apache Ant 中所述的 Ant 構建腳本,則該構建腳本將包括必要的增強步驟。有關 JDO 類增強的詳細信息,請參閱使用 JDO。POJO 和 JDO 批注JDO 允許您將 Java 對象(有時稱為簡單傳統 Java 對象或 POJO)存儲在任何帶有 JDO 兼容適配器的數據存儲區中,如 DataNucleus 訪問平臺。App Eng
59、ine SDK 包括了用于 App Engine 數據存儲區的訪問平臺插件。這意味著您可以存儲 App Engine 數據存儲區中所定義的類的實例,并使用 JDO API 將這些實例作為對象來檢索。可告知 JDO 如何使用 Java 批注來存儲和重構類的實例。我們將創建 Greeting 類來表示發布到留言簿的各條消息。在 guestbook 包中新建一個名為 Greeting 的類。(非 Eclipse 用戶,在 src/guestbook/ 目錄中創建 Greeting.java 文件。)為源文件提供以下內容:package guestbook; import jav
60、a.util.Date; import javax.jdo.annotations.IdGeneratorStrategy; import javax.jdo.annotations.IdentityType; import javax.jdo.annotations.PersistenceCapable; import javax.jdo.annotations.Persistent; import javax.jdo.annotations.PrimaryKey; import com.google.appengine.api.u
61、sers.User; PersistenceCapable(identityType = IdentityType.APPLICATION) public class Greeting PrimaryKey Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Long id; Persistent
62、 private User author; Persistent private String content; Persistent private Date date; public Greeting(User author, String content, Date date) this
63、.author = author; this.content = content; this.date = date; public Long getId() return id; public User getAuth
64、or() return author; public String getContent() return content; public Date getDate() return date; public void setAuthor(User author) this.author = author;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 手術切痣后期護理常規
- 個人報稅流程規范
- 鐵皮保溫施工培訓
- 家具設計經典案例
- 2025年鐵路貨物運輸服務項目申請報告模板
- 2025年金融服務項目立項申請報告
- 2025年河北中煙工業有限責任公司博士研究生招聘考試筆試試題(含答案)
- 2025年中央和國家機關工委所屬事業單位招聘工作人員4人筆試歷年典型考題及考點剖析附帶答案詳解
- 徜徉生字教學課件
- 奶油蛋糕教學課件制作
- GB/T 45719-2025半導體器件金屬氧化物半導體(MOS)晶體管的熱載流子試驗
- 寶媽日常心理護理
- 2025年社會學概論測試題含答案(附解析)
- 2025-2030年環境工程產業深度調研及發展趨勢與投資戰略研究報告
- 2025年事業單位公開招聘考試(E類)《綜合應用能力西醫臨床》試卷真題及完整解析
- 2024年安徽大學專職輔導員招聘筆試真題
- GB 9743-2024轎車輪胎
- 固井工藝技術培訓教學課件(77p)
- 入團志愿書(2016版本)(可編輯打印標準A4) (1)
- 盤扣式腳手架模板與支撐架專項施工方案
- 消防器材購銷合同2
評論
0/150
提交評論