泽西岛的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.mzph.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 基本语法和函…