javascript
使用GlassFish 4.0测试驱动Java API以处理JSON
編寫規范并為其做出貢獻是一回事。 如果您想提供寶貴的反饋意見,請使用它并研究真實的示例。 最新推廣的GlassFish構建包含重命名為4.0,我認為現在是對Java處理JSON(JSON-P)API進行測試的好時機。
獲取啟用了Java EE 7的GlassFish 4.0
首先要做的是從升級的版本中獲取最新的啟用Java EE 7的GlassFish 4.0的副本。 我正在使用GlassFish Server開源版4.0(內部版本77 ),它似乎非常穩定。 但是總的來說,如果您要嘗試這樣做,請記住,升級后的版本基本上是開發版本和不穩定版本的
GlassFish 4.0正在進行的工作。 抱怨他們沒有多大意義。 將下載文件解壓縮到合適的位置。 對于后續步驟,您需要更新modules目錄中的JSON-P RI。 遵循Arun的博客,了解如何獲取和構建JSON-P RI ,并將jsonp?git \ impl \ target \ javax.json-1.0-SNAPSHOT.jar復制到glassfish4 \ glassfish \ modules \ javax.json.jar。 如果在此步驟中做錯了什么,請確保制作一份原件的副本。 如果您對此感到不舒服,也可以稍后跳過它并選擇其他依賴項……事實是,JSON-P API在過去幾個月中發生了很大變化,GlassFish包含的b02不再適合給你看任何東西。 因此,現在,我們必須對其進行一些調整。 之后,您將可以將全新的GlassFish安裝集成到您最喜歡的IDE(可能是NetBeans)中 。
創建一個新的Java EE 7項目
Java EE 7原型位于codehaus.org快照存儲庫中。 為了通過NetBeans有效地使用它,您必須在“ Maven存儲庫”下的“服務”選項卡上配置存儲庫。 存儲庫URL為https://nexus.codehaus.org/content/repositories/snapshots/。 處理索引可能需要一段時間。 之后,繼續執行“新建項目> Maven>來自原型的項目”向導,并在搜索框中輸入“ webapp-javaee7”。 選擇0.1-快照,然后單擊“完成”。 另外,您始終可以使用以下命令行:
mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=webapp-javaee7 -DarchetypeVersion=0.1-SNAPSHOT -DarchetypeRepository=https://nexus.codehaus.org/content/repositories/snapshots/ -DgroupId=net.eisele.sample -DartifactId=javaee7-jsonp -Dversion=1.0-SNAPSHOT -Dpackage=net.eisele.javaee7jsonp -Darchetype.interactive=false --batch-mode --update-snapshots archetype:generate現在打開項目并編輯pom.xml。 將javaee-web-api的范圍更改為提供的范圍,并添加json-api依賴項,如下所示:
<dependencies><dependency><groupId>javax.json</groupId><artifactId>javax.json-api</artifactId><version>1.0-SNAPSHOT</version><scope>provided</scope></dependency><dependency><groupId>javax</groupId><artifactId>javaee-web-api</artifactId><version>7.0-b72</version><scope>provided</scope></dependency></dependencies>請確保使用版本1.0-SNAPSHOT和_not_正式記錄的1.0-b02 。 我們希望將第一段中構建的最新快照與所有新API一起使用。如果您決定不采用“以自己的方式構建”,則可以簡單地使用maven Central的1.0-b04。 這也有效。 請確保完全具有此依存關系順序。 如果沒有,您將使用javaee-web-api依賴項隨附的舊b02。 有人說過,Maven很簡單嗎? 現在就這樣。 讓我們創建一個簡單的JAX-RS端點。
添加JAX-RS人員資源
首先要做的是編寫基本的JAX-RS資源。 您可以通過NetBeans的“來自Pattern的RESTful Web服務”向導來完成此操作,也可以自己概述以下簡短類:
@Path('person') public class PersonResource {public PersonResource() {}@GET@Produces('application/json')public String getJson() {return '[]';}該課程需要注冊。 您可以使用Jerseys servlet機制來執行此操作,也可以使用特定于應用程序的ApplicationConfig自己注冊它:
@javax.ws.rs.ApplicationPath('webresources') public class ApplicationConfig extends Application {@Overridepublic Set<Class<?>> getClasses() {Set<Class<?>> resources = new java.util.HashSet<>();resources.add(net.eisele.javaee7jsonp.PersonResource.class);return resources;} }哇..這應該是目前為止。 您應該給它試駕。 將其部署到您的域,然后嘗試http:// localhost:8080 / javaee7-jsonp / webresources / person。 它應該只打印空括號[]。 現在是時候添加一些JSON-P了。
使用JSON-P構建JSON對象
我們將使用基于DOM的API構建人的JSON表示形式。 用以下代碼替換PersonResource中的return語句:
JsonObjectBuilder builder = Json.createObjectBuilder();builder.add('person', Json.createObjectBuilder().add('firstName', 'Markus').add('lastName', 'Eisele'));JsonObject result = builder.build();StringWriter sw = new StringWriter();try (JsonWriter writer = Json.createWriter(sw)) {writer.writeObject(result);}return sw.toString();現在,讓我們使用我最喜歡的Chrome擴展程序來看看我們擁有的功能:
顯然可以。 反過來,這將意味著讀取傳入的JSON。 看起來可能如下所示:
除了DOM-API之外,您還擁有一個Streaming-API,該API使用
JsonGenerator generator = Json.createGenerator(new FileWriter(..))JsonParser parser = Json.createParser(new StringReader(...)); 生成和解析JSON。 請查看最新的JavaDoc以獲取完整參考。 繼續嘗試自己開車。
參考:來自JCG合作伙伴 Markus Eisele在企業軟件開發和Java博客上測試了用于驅動GlassFish 4.0處理JSON的Java API 。
翻譯自: https://www.javacodegeeks.com/2013/02/test-driving-java-api-for-processing-json-with-glassfish-4-0.html
總結
以上是生活随笔為你收集整理的使用GlassFish 4.0测试驱动Java API以处理JSON的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 提取Java集合的元素-Java 8方法
- 下一篇: Spring框架:三种Spring Be