要學習本教程,您須要具有如下軟件和資源。 php
軟件或資源 | 要求的版本 |
---|---|
NetBeans IDE | Java EE 下載包 |
Java 開發工具包 (JDK) | 版本 6 或 7 |
符合 Java EE 規範的應用服務器 | Oracle WebLogic Server 11g-12c, |
jdbc/sample 數據庫(位於 |
在 Java DB (Derby) 上,jdbc/sample 數據庫是由 NetBeans IDE 生成的 經過 IDE 在 MySQL 服務器上建立樣例數據庫後,IDE 將在 MySQL 上填充該樣例數據庫。 web |
GlassFish Server 能夠隨 NetBeans IDE 的 Web 和 Java EE 分發一塊兒安裝。或者,還能夠訪問 GlassFish Server 下載頁。 spring
重要說明:Java EE 6 和 Java EE 7 項目須要使用 GlassFish Server 或 Oracle WebLogic Server 12c。 sql
REST 風格的 Web 服務是使用 REST 風格的體系結構樣式構建的服務。因爲其輕量的特性而且支持直接經過 HTTP 傳輸數據,使用 REST 風格的方法構建 Web 服務做爲一種新興趨勢已經開始替代傳統的 Web 服務構建方式,即便用基於 SOAP 的技術在 Internet 上部署服務。 數據庫
IDE 支持使用 JSR 311 - Java API for RESTful Web Services (JAX-RS) 和 Jersey(JAX-RS 的引用實現)快速開發 REST 風格的 Web 服務。 json
有關詳細信息,請參見如下內容: 瀏覽器
除了支持構建 REST 風格的 Web 服務以外,IDE 還支持測試、構建可訪問 REST 風格的 Web 服務的客戶端應用程序,以及構建用於調用 Web 服務(REST 風格和基於 SOAP)的代碼。
下面是 IDE 提供的 REST 風格的功能列表:
在本教程中,將介紹 IDE 如何支持生成、實現和測試 REST 風格的 Web 服務。
Java 中 REST 風格的 Web 服務依靠 Java 持久性 API 與數據庫進行通訊。具體來講,REST 風格的 Web 服務依賴於持久性 API 中定義的實體類和持久性單元。實體類是指映射到關係數據庫中的對象的 Java 類。按照 Java EE5 教程中的說法,「實體是一種小型持久性域對象。一般狀況下,實體表示關係數據庫中的表,每一個實體實例與該表中的一行相對應」。持久性單元包含 persistence.xml 文件中定義的實體類、數據源、持久性提供器以及持久性單元自身的名稱集合。
您可使用 NetBeans IDE 在同一過程當中建立實體類和 REST 風格的 Web 服務,也可使用 IDE 經過現有實體類建立 REST 風格的 Web 服務。在本教程中,將使用 "RESTful Services from Database"(經過數據庫生成 REST 風格的服務)嚮導在相同過程當中生成實體類和 REST 風格的 Web 服務。該向導會自動生成持久性單元。
若是使用的是 MySQL 數據庫服務器而不是 JavaDB (Derby),您須要在 IDE 中註冊該數據庫服務器,而後將 sample 數據庫添加到該服務器上。
在本教程中使用 MySQL 數據庫服務器:
此時將打開一個對話框,您能夠在其中鍵入 MySQL 服務器的配置詳細信息,包括管理員用戶名和口令。請參見鏈接到 MySQL 數據庫中的「配置 MySQL 服務器屬性」。
本練習的目標是建立一個項目,並經過數據庫生成實體類和 REST 風格的 Web 服務。
此部分使用 JavaDB (Derby) 數據庫和 jdbc/sample 數據源。JavaDB 包含在 SDK 中。jdbc/sample 數據源是在同時安裝 IDE 與 GlassFish 時由 NetBeans IDE 自動生成的。
要建立 REST 風格的 Web 服務,您須要建立 Java Web 應用程序項目。
要建立此項目,請執行如下操做:
選擇 "File"(文件)> "New Project"(新建項目)(在 Linux 和 Windows 上爲 Ctrl-Shift-N 組合鍵,在 MacOS 上爲 ⌘-Shift-N 組合鍵)。在 "Categories"(類別)下,選擇 "Java Web"。在 "Projects"(項目)下,選擇 "Web Application"(Web 應用程序)。單擊 "Next"(下一步)。此時將打開新建 Web 應用程序嚮導。
或者,也能夠建立 Maven Web 應用程序。選擇 "File"(文件)> "New Project"(新建項目)(在 Linux 和 Windows 上爲 Ctrl-Shift-N 組合鍵,在 MacOS 上爲 ⌘-Shift-N 組合鍵)。在 "Categories"(類別)下,選擇 "Maven"。在 "Projects"(項目)下,選擇 "Maven Web Application"(Maven Web 應用程序),而後單擊 "Next"(下一步)。
Maven 項目重要說明:在 NetBeans IDE 7.2 中,在建立 Maven Web 應用程序時,您沒法設置服務器。而需在建立持久性單元以前設置服務器。所以,在建立 Maven Web 應用程序後,請打開項目的 "Properties"(屬性)對話框並在 "Run"(運行)屬性中設置服務器。要打開項目的 "Properties"(屬性)對話框,請右鍵單擊 "Project"(項目)節點,而後從上下文菜單中選擇 "Properties"(屬性)。
在建立 Java Web 應用程序後,將實體類和 REST 風格的 Web 服務添加到項目中。
生成實體類和 REST 風格的 Web 服務:
若是使用的是 Tomcat,請選擇 jdbc:derby://localhost:1527/sample。若是 Derby 數據庫服務器未能自動啓動,須要從 "Services"(服務)窗口的 "Databases"(數據庫)標籤中啓動它。
MySQL 用戶注意事項:您必須建立新的數據源。選擇 "New Data Source"(新建數據源),指定任意描述性名稱,而後選擇jdbc:mysql://localhost:3306/sample 數據庫鏈接。在 MySQL 上建立樣例數據庫時建立了該鏈接。
注:"RESTful Web Services from Database"(經過數據庫建立 REST 風格的 Web 服務)嚮導會自動生成 JAXB 標註。若是使用 "Entity Classes from Database"(經過數據庫生成實體類)嚮導爲 Java EE 應用程序生成實體類,而且之後可能要經過這些實例類建立 REST 風格的 Web 服務,請確保選中 "Generate JAXB Annotations"(生成 JAXB 標註)框。此外,還能夠在運行 "RESTful Web Services from Entity Classes"(經過實體類建立 REST 風格的 Web 服務)嚮導以前手動將 JAXB 標註添加到實體類中。有關詳細信息,請參見用於生成更簡單的 REST 風格 Web 服務的 NetBeans。
Spring 框架應用程序:在 web.xml 部署描述符中註冊 REST 風格的資源。不要使用 javax.ws.rs.core.Application。
在本教程中,接受默認值,而後單擊 "Finish"(完成)。單擊 "Finish"(完成)後,IDE 將生成實體類和服務類。在 Java EE 項目中,IDE 還將生成應用程序配置類,這是應用程序的子類。
IDE 如今將生成 REST 風格的 Web 服務。在 IDE 完成後,查看 "Projects"(項目)窗口。生成的實體類位於 entities 包中,服務位於 service 包中。經過數據庫建立的 Java EE REST 風格的 Web 服務將實例化每一個服務類中的 EntityManager。這就不須要使用 JPA 控制器類並可生成更簡單的代碼。
本練習的目標是試驗您的應用程序。您將爲測試建立一個新的 Web 應用程序,而後使用 IDE 中的嚮導在新項目中生成測試。
IDE 將在 WebServiceTest 項目中生成文件 test-resbeans.html。IDE 還將自動啓動服務器並部署 CustomerDB 應用程序。
若是輸出窗口顯示錯誤消息,指出一個或多個類不存在,且項目未構建,則請將 Jersey 庫添加到編譯時庫中。右鍵單擊項目節點,而後選擇 "Properties"(屬性)。在 "Properties"(屬性)樹狀菜單中選擇 "Libraries"(庫)。單擊 "Add Library"(添加庫)並定位到 Jersey 庫。
左側是根資源集。此處將其命名爲 entities.customer、entities.discountCodes 和 entities.microMarket。
"Test Output"(測試輸出)區域中有 5 個標籤。
退出瀏覽器並返回到 IDE。
Jersey 集成到了 Spring Framework 中。在使用 Spring Framework 建立 Java Web 應用程序時,會自動建立識別 REST 的 Servlet。不過,Spring 3 不包含 aopalliance.jar,REST 風格的 Web 服務須要使用它來注入 EntityManager 對象。
按照經過數據庫生成實體類中所述在新建項目嚮導中建立 Java Web 應用程序時,在選擇服務器後,單擊 "Next"(下一步)而不是單擊 "Finish"(完成)將打開向導的 "Frameworks"(框架)面板。選擇 "Spring Web MVC",而後單擊 "Finish"(完成)。
注:若是您已建立項目,則能夠經過在 "Projects"(項目)窗口中右鍵單擊項目節點,而後在彈出菜單中選擇 "Properties"(屬性),來添加對 Spring Web MVC 框架的支持。在 "Project Properties"(項目屬性)窗口中,選擇 "Frameworks"(框架)類別,而後單擊 "Add"(添加)並選擇 "Spring Web MVC"。
Spring 3 不包含 aopalliance.jar。該應用程序須要使用此庫才能注入 EntityManager。要解決問題,您須要下載此 JAR,並將其添加到類路徑中。請參見問題 193626 和Spring 論壇。
添加 aopalliance.jar:
或者,也能夠在 "Projects"(項目)窗口中右鍵單擊項目的 "Libraries"(庫)節點,而後選擇 "Add JAR/Folder"(添加 JAR/文件夾)。
您須要使用絕對路徑引用。
使用 Spring Framework 建立 Java Web 應用程序並將 aopalliance.jar 添加到項目的類路徑後,請運行 "RESTful Web Service from Database"(經過數據庫生成 REST 風格的 Web 服務)嚮導,如生成實體和服務中所述。可是,不會將 REST 風格的資源註冊到 javax.ws.rs.core.Application 的子類中。而是使用 web.xml 部署描述符。在全部狀況下,Spring Framework 都會生成 web.xml 部署描述符。
有關 NetBeans IDE 中 Spring Framework 項目功能的詳細信息,請參見 Spring Framework 簡介。
已生成的服務類中可能存在編譯錯誤。若是在向類路徑中添加 aopalliance.jar 前建立 REST 風格的服務,則能夠查看這些錯誤。
解決服務類中的編譯錯誤: