Json 创建XSD并将其链接到WADL

Json 创建XSD并将其链接到WADL,json,xsd,rpc,jax-rs,wadl,Json,Xsd,Rpc,Jax Rs,Wadl,我正在使用JAX-RS创建一些服务,这些服务需要接受任意复杂的对象作为参数,而不仅仅是像整数和字符串这样的原语。表示在本例中仅使用包装器对象作为单个参数 我关心的是如何记录服务的输入格式?如果创建的服务类似于以下内容: @POST @Produces("application/json") @Consumes("application/json") @Path("oneParam") public ComplexObject2 myServiceMethod(ComplexObject1 obj

我正在使用JAX-RS创建一些服务,这些服务需要接受任意复杂的对象作为参数,而不仅仅是像整数和字符串这样的原语。表示在本例中仅使用包装器对象作为单个参数

我关心的是如何记录服务的输入格式?如果创建的服务类似于以下内容:

@POST
@Produces("application/json")
@Consumes("application/json")
@Path("oneParam")
public ComplexObject2 myServiceMethod(ComplexObject1 obj) {
    Foo f = obj.foo
    Bar b = obj.bar
    ...
}
<resource path="/oneParam">
   <method name="POST">
      <request>
            <representation mediaType="application/json"/>
      </request>
      <response>
             <representation mediaType="application/json"/>
       </response>
   </method>
</resource> 
CXF生成的自动生成的WADL将只生成以下内容:

@POST
@Produces("application/json")
@Consumes("application/json")
@Path("oneParam")
public ComplexObject2 myServiceMethod(ComplexObject1 obj) {
    Foo f = obj.foo
    Bar b = obj.bar
    ...
}
<resource path="/oneParam">
   <method name="POST">
      <request>
            <representation mediaType="application/json"/>
      </request>
      <response>
             <representation mediaType="application/json"/>
       </response>
   </method>
</resource> 

它不包含关于请求或响应实际包含的内容的信息。CXF邮件列表上的Sergey说可以将模式链接到表示,但是我该怎么做呢?如何创建XSD


(注意,使用POST作为幂等资源可能不是RESTful,但在这里并不重要,因为我们本质上是使用Json进行RPC。这或多或少是现有基于SOAP的api的1:1克隆。)

可以将XSD文件链接到WADL文件,然后在请求和响应的表示中引用XML元素。但是,由于它是XML模式,所以不适用于JSON表示

要将XSD链接到WADL文件中,请在主
resources
元素之前的文件顶部创建
grammars
元素

<grammars>
    <include href="myapp.xsd"/>
</grammars>

然后添加对XML元素的引用,如下所示(使用示例的修改版本):


前缀
myapp
在XSD中定义,也可以在WADL文件中使用


我不知道如何配置CXF来自动执行此操作。我对Jersey的体验与此类似,我们将生成的WADL用作以后手动编辑的起点。

谢谢!我现在没有机会去看看,但这似乎正是我需要的。我不知道如何配置CXF,但life找到了一种方法:)模式是帮助开发人员找出发送和返回的内容,而不必验证机器的输出。因此,这适用于xml而不是json,对我来说并不重要。