当前位置: 首页 > news >正文

如何直到网站是用什么模板做的做网站好多钱

如何直到网站是用什么模板做的,做网站好多钱,南阳网站,网页制作公司moxy json介绍因此#xff0c;这些天我正在为即将推出的Oracle云服务开发新的REST API#xff0c;因此我需要做的事情之一就是能够为模型中的bean自动生成JSON模式。 我正在使用MOXy从POJO生成JSON#xff0c;从EclipseLink 2.5.1版本开始#xff0c;它现在具有从bean模型生… moxy json介绍 因此这些天我正在为即将推出的Oracle云服务开发新的REST API因此我需要做的事情之一就是能够为模型中的bean自动生成JSON模式。 我正在使用MOXy从POJO生成JSON从EclipseLink 2.5.1版本开始它现在具有从bean模型生成JSON模式的能力。 将来会有一个更加正式的解决方案集成到Jersey 2.x 但是如果您想尝试一下此解决方案目前就可以使用。 因此我们需要设置的第一类是模型处理器这是非常内部的Jersey类它允许我们使用额外的方法和资源来修改资源模型。 我们可以向模型中的每个资源添加JsonSchemaHandler 以完成生成新模式的艰苦工作。 由于这是一个简单的POC因此这里没有缓存如果要在生产代码中使用它请注意这一点。 import com.google.common.collect.Lists;import example.Bean;import java.io.IOException; import java.io.StringWriter;import java.text.SimpleDateFormat;import java.util.Date; import java.util.List;import javax.inject.Inject;import javax.ws.rs.HttpMethod; import javax.ws.rs.WebApplicationException; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.core.Configuration; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response;import javax.xml.bind.JAXBException; import javax.xml.bind.SchemaOutputResolver; import javax.xml.transform.Result; import javax.xml.transform.stream.StreamResult;import org.eclipse.persistence.jaxb.JAXBContext;import org.glassfish.jersey.process.Inflector; import org.glassfish.jersey.server.ExtendedUriInfo; import org.glassfish.jersey.server.model.ModelProcessor; import org.glassfish.jersey.server.model.ResourceMethod; import org.glassfish.jersey.server.model.ResourceModel; import org.glassfish.jersey.server.model.RuntimeResource; import org.glassfish.jersey.server.model.internal.ModelProcessorUtil; import org.glassfish.jersey.server.wadl.internal.WadlResource;public class JsonSchemaModelProcessor implements ModelProcessor {private static final MediaType JSON_SCHEMA_TYPE MediaType.valueOf(application/schemajson);private final ListModelProcessorUtil.Method methodList;public JsonSchemaModelProcessor() {methodList Lists.newArrayList();methodList.add(new ModelProcessorUtil.Method($schema, HttpMethod.GET, MediaType.WILDCARD_TYPE, JSON_SCHEMA_TYPE,JsonSchemaHandler.class));}Overridepublic ResourceModel processResourceModel(ResourceModel resourceModel, Configuration configuration) {return ModelProcessorUtil.enhanceResourceModel(resourceModel, true, methodList, true).build();}Overridepublic ResourceModel processSubResource(ResourceModel resourceModel, Configuration configuration) {return ModelProcessorUtil.enhanceResourceModel(resourceModel, true, methodList, true).build();}public static class JsonSchemaHandler implements InflectorContainerRequestContext, Response {private final String lastModified new SimpleDateFormat(WadlResource.HTTPDATEFORMAT).format(new Date());Injectprivate ExtendedUriInfo extendedUriInfo;Overridepublic Response apply(ContainerRequestContext containerRequestContext) {// Find the resource that we are decorating, then work out the// return type on the first GETListRuntimeResource ms extendedUriInfo.getMatchedRuntimeResources();ListResourceMethod rms ms.get(1).getResourceMethods();Class responseType null;found:for (ResourceMethod rm : rms) {if (GET.equals(rm.getHttpMethod())) {responseType (Class) rm.getInvocable().getResponseType();break found;}}if (responseType null) {throw new WebApplicationException(Cannot resolve type for schema generation);}//try {JAXBContext context (JAXBContext) JAXBContext.newInstance(responseType);StringWriter sw new StringWriter();final StreamResult sr new StreamResult(sw);context.generateJsonSchema(new SchemaOutputResolver() {Overridepublic Result createOutput(String namespaceUri, String suggestedFileName) throws IOException {return sr;}}, responseType);return Response.ok().type(JSON_SCHEMA_TYPE).header(Last-modified, lastModified).entity(sw.toString()).build();} catch (JAXBException jaxb) {throw new WebApplicationException(jaxb);}}}} 请注意 JsonSchemaHandler代码中的非常简单的启发式方法假定每个资源都有11映射到单个JSON Schema元素。 当然这可能不适用于您的特定应用程序。 现在我们已经在一个已知的位置生成了架构我们需要将其告知客户我们要做的第一件事是确保当用户在特定资源上调用OPTIONS时有一个合适的链接头 import java.io.IOException;import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.core.Context; import javax.ws.rs.core.Link; import javax.ws.rs.core.UriInfo;public class JsonSchemaResponseFilter implements ContainerResponseFilter {Contextprivate UriInfo uriInfo;Overridepublic void filter(ContainerRequestContext containerRequestContext,ContainerResponseContext containerResponseContext) throws IOException {String method containerRequestContext.getMethod();if (OPTIONS.equals(method)) {Link schemaUriLink Link.fromUriBuilder(uriInfo.getRequestUriBuilder().path($schema)).rel(describedBy).build();containerResponseContext.getHeaders().add(Link, schemaUriLink);}} } 由于这是JAX-RS 2.x因此我们正在与之合作将所有内容捆绑为一个功能 import javax.ws.rs.core.Feature; import javax.ws.rs.core.FeatureContext;public class JsonSchemaFeature implements Feature {Overridepublic boolean configure(FeatureContext featureContext) {if (!featureContext.getConfiguration().isRegistered(JsonSchemaModelProcessor.class)) {featureContext.register(JsonSchemaModelProcessor.class);featureContext.register(JsonSchemaResponseFilter.class);return true;}return false;} } 我不会展示我的整个POJO类集。 但是很快这就是模式生成代码所需的带有GET方法的Resource类 import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType;Path(/bean) public class BeanResource {GETProduces(MediaType.APPLICATION_JSON)public Bean getBean() {return new Bean();} } 最后如果对资源执行GET将看到以下内容 GET .../resources/bean Content-Type: application/json{message : hello,other : {message : OtherBean},strings : [one,two,three,four] } 和选项 OPTIONS .../resources/bean Content-Type: text/plain Link: http://.../resources/bean/$schema; reldescribedByGET, OPTIONS, HEAD 最后如果您解析模式资源 GET .../resources/bean/$schema Content-Type: application/schemajson{$schema : http://json-schema.org/draft-04/schema#,title : example.Bean,type : object,properties : {message : {type : string},other : {$ref : #/definitions/OtherBean},strings : {type : array,items : {type : string}}},additionalProperties : false,definitions : {OtherBean : {type : object,properties : {message : {type : string}},additionalProperties : false}} } 这里有很多工作要做特别是根据我不久前转发到Jersey 2.xa的声明性链接注释生成超媒体扩展。 但这确实指向解决方案我们可以运用各种解决方案使某些事情现在起作用。 翻译自: https://www.javacodegeeks.com/2014/04/quick-and-a-bit-dirty-json-schema-generation-with-moxy-2-5-1.htmlmoxy json介绍
http://wiki.neutronadmin.com/news/159044/

相关文章:

  • 云南省城乡住房建设厅网站中沪红蚂蚁装潢公司
  • 做网站好做吗o2o 网站
  • 百度云wordpress怎么搭建网站网站技术实现方案
  • 网站维护要求wordpress win主机伪静态
  • 云南网站建设及优化哪些网站可以做微课
  • 合肥做网站价格长春门户网站建设制作
  • 青岛小型网站建设黄平网站建设
  • .net电商网站全站开发wordpress 媒体文件发布
  • 建设银行的官方网站电脑版企业电子商务网站平台建设
  • 网页设计与网站建设实例教程答案学做网站论坛vip共享
  • 2017年网站推广怎么做wordpress注册时候卡住
  • 怎样建设好网站古色古香网站模板
  • 个人网站建设方案书备案wordpress访问格式丢失
  • 洛阳电商网站建设丰田车营销网站建设的纲要计划书
  • 手机网站免费制作清理网站数据库
  • 网站建设 网址导航wordpress.htaccess
  • 找人做网站怎么知道归属人成品视频直播软件推荐哪个好一点的
  • 设计师新手接单网站锡林郭勒盟建设局网站
  • 网站建站发布平台东坑仿做网站
  • 大学生做家教网站推荐
  • 写网站建设的论文公司网站建设费计入哪个科目
  • 单位网站建设典型材料上海市建设合同信息表网站
  • 设计一个网站首页方案汕头网站建设方案开发
  • 移动端网站的优点优化网站建设哪家专业
  • 宠物网站的设计与实现电商的网站设计
  • 西安seo网站排名优化公司做调查的有哪些网站有哪些
  • 天津科技公司网站陕西省建设工会网站
  • 南通个人网站制作网站做预览文档
  • 做百度网站优化多少钱建筑设计自学教程
  • 建筑专业网站广州关于进一步优化