11

我需要为 RESTful 服务获取 WADL 文件。我知道如果使用球衣,它可以作为http://localhost:8080/application.wadl. 但我使用 RESTeasy。

我可以在我的框架案例中做同样的事情吗?

4

4 回答 4

11

最新版本:

引用第 49 章 RESTEasy WADL 支持

第 49 章 RESTEasy WADL 支持

49.1。
对 Servlet 容器49.2的 RESTEasy WADL 支持。RESTEasy WADL 支持 Sun JDK HTTP Server
49.3。RESTEasy WADL 支持 Netty Container
49.4。RESTEasy WADL 支持 Undertow 容器

RESTEasy 有自己的支持为其资源生成 WADL,它支持多种不同的容器。以下文本将向您展示如何在不同的容器中使用此功能。

49.1。RESTEasy WADL 对 Servlet 容器的支持

RESTEasy WADL 用于ResteasyWadlServlet支持 servlet 容器。它可以注册到web.xml启用 WADL 功能。这是一个显示 in 用法的ResteasyWadlServlet示例web.xml

<servlet>
  <servlet-name>RESTEasy WADL</servlet-name>
  <servlet-class>org.jboss.resteasy.wadl.ResteasyWadlServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>RESTEasy WADL</servlet-name>
  <url-pattern>/application.xml</url-pattern>
</servlet-mapping>

前面的配置web.xml显示了如何启用 ResteasyWadlServlet并将其映射到/application.xml. 然后可以从配置的 URL 访问 WADL:

/application.xml

旧版本的解决方法

有一个解决方法:maven-wadl-plugin由 jersey 人员调用的 maven 插件,它也可以为使用 RESTEasy 编码的服务生成 WADL。

以下是如何使用它。

1.将此添加到您的pom.xml

<build>
<plugins>
    <plugin>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>maven-wadl-plugin</artifactId>      
        <version>1.17</version>
        <executions>
            <execution>
                <id>generate</id>
                <goals>
                    <goal>generate</goal>
                </goals>
                <phase>${javadoc-phase}</phase>
            </execution>
        </executions>
        <configuration>
            <wadlFile>${project.build.outputDirectory}/application.wadl
            </wadlFile>
            <formatWadlFile>true</formatWadlFile>
            <baseUri>http://example.com:8080/rest</baseUri>
            <packagesResourceConfig>
                <param>com.example.rs.resource</param>
            </packagesResourceConfig>
            <wadlGenerators>
                <wadlGeneratorDescription>
                    <className>com.sun.jersey.server.wadl.generators.WadlGeneratorApplicationDoc
                    </className>
                    <properties>
                        <property>
                            <name>applicationDocsFile</name>
                            <value>${basedir}/src/main/doc/application-doc.xml</value>
                        </property>
                    </properties>
                </wadlGeneratorDescription>
                <wadlGeneratorDescription>
                    <className>com.sun.jersey.server.wadl.generators.WadlGeneratorGrammarsSupport
                    </className>
                    <properties>
                        <property>
                            <name>grammarsFile</name>
                            <value>${basedir}/src/main/doc/application-grammars.xml</value>
                        </property>
                    </properties>
                </wadlGeneratorDescription>
            </wadlGenerators>
        </configuration>
    </plugin>
</plugins>
</build>

注意baseUripackagesResourceConfig元素。您必须更改它们以反映您的项目配置。您可能还想更改插件的版本(我使用的是 1.17)。

2. 创建 /doc 文件夹并添加一些文件。

创建src/main/doc/文件夹并创建下面的两个文件。

文件:application-doc.xml

内容:

<?xml version="1.0" encoding="UTF-8"?>
<applicationDocs targetNamespace="http://wadl.dev.java.net/2009/02">
    <doc xml:lang="en" title="A message in the WADL">This is added to the start of the generated application.wadl</doc>
</applicationDocs>

文件:application-grammars.xml

内容:

<?xml version="1.0" encoding="UTF-8" ?>
<grammars xmlns="http://wadl.dev.java.net/2009/02" />

3.运行maven命令。

转到项目文件夹并运行以下命令:

$ mvn compile com.sun.jersey.contribs:maven-wadl-plugin:generate

应该生成文件\target\classes\application.wadl(WADL 本身)和\target\classes\xsd0.xsd (资源的架构 - 它由 application.wadl 使用)。

根据需要编辑和使用它们。

PS.:请记住,这是对 maven-wadl-plugin 的非常简单的使用。它可以做更多的事情。要更好地了解它,请参阅http://search.maven.org/remotecontent?filepath=com/sun/jersey/samples/generate-wadl/1.12/generate-wadl-1.12-project.zip中的 zip 文件

于 2013-02-07T02:29:21.937 回答
9

RESTeasy 中的 WADL 生成是一个尚未实现的功能。如果你想要它去投票给它。

https://issues.jboss.org/browse/RESTEASY-166

于 2011-05-26T14:35:10.000 回答
4

请参阅RESTEasy WADL 支持(3.1.0)。下面的截图是从那里复制的

<servlet>
    <servlet-name>RESTEasy WADL</servlet-name>
    <servlet-class>org.jboss.resteasy.wadl.ResteasyWadlServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>RESTEasy WADL</servlet-name>
    <url-pattern>/application.xml</url-pattern>
</servlet-mapping>

这使用ResteasyWadlServlet和 将使 WADL 可在 处访问/application.xml

注意:Rex 和 Jaskirat 之前已经提到RESTEASY-166用于管理此功能的实现。看来这是在 3.0.14 完成的。

于 2017-01-04T19:21:41.373 回答
2

我们可以在 Maven 项目的帮助下使用 POM.XML 生成一个 wadl

https://issues.jboss.org/browse/RESTEASY-166在这里查看评论..!!

于 2013-03-14T09:11:08.460 回答