澤西島的JSON模式生成

因此,在上一篇文章中,我討論了一個允許在WADL中使用JSON-Schema的建議,這篇文章探討了如何使它與最近構建的Jersey一起使用。 在1.16發布之前,您將必須下載/參考1.16SNAPSHOT。

如果您使用的是Maven,那么假設您已經有了jersey和jersey-json,那么更新依賴項應該很簡單。 您只需要添加對“ com.sun.jersey.contribs”組中“ jersey-wadl-json-schema”偽像的依賴關系,即可獲得新功能。

如果您不在Maven之外,最簡單的方法是下載最新的jersey-archive ,然后下載jersey-wadl-json-schema jar。 如何部署這些是特定于工具的,但是,如果您使用的是WLS,則以下是有關如何升級Jersey版本的一些特定說明 。

完成此工作后,需要創建WadlGeneratorConfig類以啟用此新的語法生成:

package jersey;import com.sun.jersey.api.wadl.config.WadlGeneratorConfig;
import com.sun.jersey.api.wadl.config.WadlGeneratorDescription;
import com.sun.jersey.wadl.generators.json.WadlGeneratorJSONGrammarGenerator;import java.util.List;public class JsonGeneratorConfig extends WadlGeneratorConfig {@Overridepublic Listconfigure() {return generator(WadlGeneratorJSONGrammarGenerator.class).descriptions();}
}

然后可以通過多種方式進行注冊,這是使用servlet初始化參數的示例。 還要注意,為了使這個示例簡單,我們使用Jersey POJO映射; 但是在撰寫此博客時,我注意到該設置會影響WADL的JSON版本的格式,以防您嘗試這樣做。

<?xml version = '1.0' encoding = 'ISO-8859-1'?>
<web-app xmlns='http://java.sun.com/xml/ns/javaee' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xsi:schemaLocation='http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd'version='3.0'><servlet><servlet-name>jersey</servlet-name><servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class><init-param><param-name>com.sun.jersey.config.property.WadlGeneratorConfig</param-name><param-value>jersey.JsonGeneratorConfig</param-value></init-param><init-param><param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name><param-value>true</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>jersey</servlet-name><url-pattern>/resources/*</url-pattern></servlet-mapping>
</web-app>

因此,我整理了一個非常簡單的echo服務,只是為了檢查它是否正常工作:

package jersey;import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;@Path('/echo')
public class EchoResource {@GET@Produces('application/json')public EchoBean echo() {EchoBean bean = new EchoBean();bean.setMessage('Hello');return bean;}@POST@Consumes('application/json')@Produces('application/json')public EchoBean echo(EchoBean echo) {return echo;}}andpackage jersey;public class EchoBean {public EchoBean() {super();}private String message;public void setMessage(String message) {this.message = message;}public String getMessage() {return message;}}

這個非常簡單的示例將導致以下帶有引用的JSON-Schema元素的WADL:

<?xml version = '1.0' encoding = 'UTF-8'?>
<ns0:application xmlns:ns0='http://wadl.dev.java.net/2009/02'><ns0:doc xmlns:ns1='http://jersey.java.net/' ns1:generatedBy='Jersey: 1.16-SNAPSHOT 11/19/2012 12:59 AM'/><ns0:grammars/><ns0:resources base='http://localhost:7103/Jersey/resources/'><ns0:resource path='/echo'><ns0:method id='echo' name='GET'><ns0:response><ns0:representation mediaType='application/json' xmlns:ns2='http://wadl.dev.java.net/2009/02/json-schema' ns2:describedby='application.wadl/echoBean'/></ns0:response></ns0:method><ns0:method id='echo' name='POST'><ns0:request><ns0:representation mediaType='application/json' xmlns:ns3='http://wadl.dev.java.net/2009/02/json-schema' ns3:describedby='application.wadl/echoBean'/></ns0:request><ns0:response><ns0:representation mediaType='application/json' xmlns:ns4='http://wadl.dev.java.net/2009/02/json-schema' ns4:describedby='application.wadl/echoBean'/></ns0:response></ns0:method></ns0:resource></ns0:resources>
</ns0:application>

URI application.wadl / echoBean包含以下簡單的JSON-Schema定義:

{'type' : 'object','properties' : {'message' : {'type' : 'string'}},'name' : 'echoBean'
}

現在,當前設計中存在許多限制,尤其是生成的模式不考慮任何符號設置 。 但是我認為這足以引起人們對該功能是否普遍有用的反饋。 在網絡上以及在Oracle內部,人們對JSON-Schema的興趣似乎都在增長,因此,看看這種描述是否變得更加普遍將很有趣。

參考: Gerard Davison博客博客中的JCG合作伙伴 Gerard Davison 在澤西 島上的 JSON-Schema生成 。

翻譯自: https://www.javacodegeeks.com/2012/11/json-schema-generation-in-jersey.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370978.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370978.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370978.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++map類型 之 簡單介紹

一&#xff1a;map的前世今生&#xff08;1&#xff09;從關聯容器與順序容器說起。關聯容器通過鍵&#xff08;key&#xff09;存儲和讀取元素。而順序容器則通過元素在容器中的位置順序存儲和訪問元素&#xff08;vector,queue,stack,list等&#xff09;。關聯容器&#xff0…

MySql Socket 完成數據庫的增查Demo

需求: 利用MySql數據庫結合前端技術完成用戶的注冊(要求不使用Web服務技術),所以 Demo采用Socket技術實現Web通信. 第一部分:數據庫創建 數據庫采用mysql 5.7.18, 數據庫名稱為MyUser, 內部有一張表 user.字段有 Id,UserName,Psd,Tel 第二部分:數據庫連接與Socket通信 創建控…

oracle導數卡死,oracle-審計導數

1、因審計需求&#xff0c;需要將MySQL、Oracle數據庫中需要的表數據導入到SqlSERVER進行審計。2、之前的方法&#xff1a;A. oracle組將表dump下來&#xff0c;進行壓縮&#xff0c;傳送到oracle導數服務器(中轉服務器)&#xff0c;再進行還原&#xff0c;然后修改表結構&…

蘋果桌面主題_看膩了手機自帶的桌面主題,試試這個

在這個看臉的時代&#xff0c;顏值似乎越來越重要了。尤其是我們每天都要看到的手機桌面&#xff0c;如果它的顏值好一點&#xff0c;也許我們的心情會更好&#xff0c;所以有不少人都用手機自帶的主題來美化桌面&#xff0c;但是對于喜歡個性的我們&#xff0c;手機自帶的主題…

Java SE 11:推動Java向前發展

介紹 在我看來&#xff0c;這篇文章提出了Java語言應該如何發展以保持其作為首選語言的地位。 它還提供了一些我喜歡但有時&#xff08;可能永遠不會&#xff09;成為Java一部分的功能&#xff0c;由于我將要解釋的某些原因&#xff0c;這些功能有時我已經愛上了。 我真的很想…

python之property屬性

Property的概念&#xff1a;property是一種特殊的屬性&#xff0c;訪問它時會執行一段功能&#xff08;函數&#xff09;&#xff0c;然后返回值。 import mathclass Circle:def __init__(self,radius):#園的半徑radiusself.radiusradiusproperty#areaproperty(area)def area(s…

Hexo使用細節及各種問題

解決markdown圖片不顯示(返回403 forbidden)、添加本地圖片無法顯示、修改文章page模板、同時部署發布同步到多個倉庫站點(Github、coding、gitee 碼云) 圖片不顯示 在使用過程中&#xff0c;會發現有的引用圖片無法顯示的問題。但是如果直接復制圖片地址到瀏覽器打開的話顯示…

oracle的等保,Oracle等保測評相關指令

Oracle用戶管理:SQL*Pluscreate user 用戶名 identified by 密碼; //創建用戶grant 權限(dba管理員&#xff0c;resource普通用戶&#xff0c;connect訪客) to 用戶名; //授權drop user 用戶名 cascade; //刪除用戶&#xff0c;加cascade會把用戶創建的所有東西刪除Linux設置用…

Spring3 + JPA2 + Java EE6 App Server =配置混亂

Spring很棒&#xff0c;JavaEE6很棒&#xff0c;最新的JavaEE6 Application服務器也很棒。 這篇文章不是Spring Vs JavaEE6上的專欄文章&#xff0c;而是我在JBoss AS-7.1 App Server上移植Spring3 JPA2&#xff08;Hibernate&#xff09;應用程序的經驗。 我的應用程序要求非…

python面向對象進階(1)

面向對象進階 isinstance(obj,cls) 檢查是否obj是類cls的對象class Foo(object): passobj Foo() isinstance(obj,Foo)issubclass(sub,super) 檢查sub是否是super的派生類class Foo(object): passclass Bar(Foo): passissubclass(Bar,Foo) 反射python面向對象中的反射&#xff…

智能小車37:異常在ARM、JAVA、硬件里的實現

幾乎所有編程語言都有異常&#xff0c;可以說有程序就有異常。今天學習Arm的中斷(異常)處理,聯想到Java的異常,硬件中如何實現等問題&#xff0c;下面給大家分享一下。 一、Arm的中斷。 1.觸發異常 2.保存現場 3.cpu進入異常工作模式&#xff0c;程序指針(pc)跳入異常入口&…

c++builder提高批量動態創建panel的速度_騎行時影響速度的事項有哪些 怎樣有效提高騎行速度 單車租賃信息...

撇開人的因素在自行車的組件中對車速影響最大的幾項是什么?車重?自鎖?輪組?傳動?我的個人感受&#xff0c;從提高幅度上來講&#xff0c;而不是重要性上來講一、自鎖起碼提高你50%的速度&#xff0c;我不用自鎖和別人一起走AVS25就很辛苦了&#xff0c;用了自鎖&#xff0…

ansys matlab 調用,matlab 調用ansys (轉載)

問題的提出&#xff1a;我們經常會需要用ansys計算一些東西&#xff0c;之后再用matlab來處理計算的結果。當修改某些參數重復上述過程的時候&#xff0c;就比較容易出現問題——比如ansys模型中的參數和matlab程序中參數的一致性問題等。這時可以考慮采用下面的協同工作的方法…

本地存儲之sessionStorage

源碼可以到GitHub上下載&#xff01; sessionStorage&#xff1a; 關閉瀏覽器再打開將不保存數據 復制標簽頁會連同sessionStorage數據一同復制 復制鏈接地址打開網頁不會復制seessionStorage內的數據 清除緩存加載當前頁對頁面無影響 1) 同源策略限制。若想在不同頁面之間對同…

哈希三道題

兩數之和 給定一個整數數組 nums 和一個整數目標值 target&#xff0c;請你在該數組中找出 和為目標值 target 的那 兩個 整數&#xff0c;并返回它們的數組下標。 你可以假設每種輸入只會對應一個答案。但是&#xff0c;數組中同一個元素在答案里不能重復出現。 你可以按任意…

zemax光學設計超級學習手冊_穿越十年的一個ZEMAX光學設計案例

目前超過兩千人的光學與光學設計方面的微信公眾號&#xff0c;歡迎您&#xff01;穿越十年的一個ZEMAX光學設計案例作者&#xff1a;窗臺小綠蘿CAD&#xff0c;這個詞已經深入到學習、工作很多年&#xff0c;翻譯過來就是Computer Aided Design&#xff0c;計算機輔助設計。隨著…

Java本質和性能

最初的問題是如何計算二進制數中1的個數&#xff1f; 我包含了使用Integer.bitCount&#xff08;&#xff09;的性能比較&#xff0c;該性能可以轉換為固有特性&#xff0c;即單個機器代碼指令POPCNT和執行相同功能的Java代碼。 題 如何計算二進制數中1的個數&#xff1f; 假…

spring RequestMapping 包含http的部分以及各部分詳解

RequestMapping有四個參數&#xff0c;分別為&#xff1a;1、value&#xff1a;表示請求URL2、method&#xff1a;表示請求方法3、params&#xff1a;表示請求參數4、headers&#xff1a;表示請求頭 【例如】&#xff1a;RequestMapping(value"/testRequestMapping",…

【ZBH選講·拍照】

【問題描述】 假設這是一個二次元。LYK召集了n個小伙伴一起來拍照。他們分別有自己的身高Hi和寬度Wi。為了放下這個照片并且每個小伙伴都完整的露出來&#xff0c;必須需要一個寬度為ΣWi&#xff0c;長度為max{Hi}的相框。&#xff08;因為不能疊羅漢&#xff09;。LYK為了節省…

php基礎是什么,php基礎學什么?

有不少同學想要學習 PHP&#xff0c;但又不清楚 PHP 基礎學什么&#xff0c;那么這篇文章告訴你。熟悉前端開發語言學習 PHP 之前&#xff0c;首先要學習前端語言包括 HTML、CSS、JS 等。等對前端語言有個大致掌握后&#xff0c;能編寫一個 web 靜態頁面。學習 PHP 基本語法和函…