在Jersey中,如何指定仅显示资源的最小application.wadl?

时间:2017-02-21 23:03:08

标签: java jersey war wadl

例如,我想要一些形式:

l_array.count = 4
l_array(2) = B

1 个答案:

答案 0 :(得分:0)

我正在回答我自己的问题,分享我学到的东西。

定义WadlGeneratorConfig的子类, 你定义一个什么都不做的WadlGenerator语法。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
    <doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 1.18 11/22/2013 01:21 AM" />
    <grammars />
    <resources base="https://localhost/plugh/">
    ....
    </resources>
/application>

定义一个空的application-grammars.xml

  package com.try1234;


  import java.util.List;

  import com.sun.jersey.api.wadl.config.WadlGeneratorConfig;
  import com.sun.jersey.api.wadl.config.WadlGeneratorDescription;
  import com.sun.jersey.server.wadl.generators.WadlGeneratorGrammarsSupport;

  public class PlughWadlGeneratorConfig extends WadlGeneratorConfig
  {
      @Override
      public List<WadlGeneratorDescription> configure()
      {
          return
           generator(WadlGeneratorGrammarsSupport.class)
               .prop("grammarsStream", "application-grammars.xml")
               .prop("overrideGrammars", true)
           .descriptions();
      }
  }

确保它位于webapp的类路径中,例如,在Maven样式的目录结构中,该文件位于target / classes中。

修改web.xml以使用WadlGeneratorConfig的子类。添加以下行:

<grammars xmlns="http://wadl.dev.java.net/2009/02"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:xi="http://www.w3.org/1999/XML/xinclude">
</grammars>

加载您的Web应用程序,此URL上的以下GET应该有效:

https://localhost/plugh/application.wadl

此解决方案适用于Jersey 1.18。

注意:空语法元素的基本原理是 我遇到了https://java.net/jira/browse/JAXB-411;通过不生成任何,我能够避免IllegalArgumentException。

参考文献: http://razvancaraghin.blogspot.com/2014/01/html-documentation-for-your-rest.html

Troubles with WADL / generated XSD using Jersey with a contract-first approach