我可以使用RESTeasy获取application.wadl文件吗?

时间:2011-03-14 16:55:10

标签: java web-services resteasy wadl

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

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

4 个答案:

答案 0 :(得分:11)

最新版本:

引用Chapter 49. RESTEasy WADL Support

  

第49章.RESTEasy WADL支持

     

49.1. RESTEasy WADL Support for Servlet Container
  49.2. RESTEasy WADL support for Sun JDK HTTP Server
  49.3. RESTEasy WADL support for Netty Container
  49.4. RESTEasy WADL Support for Undertow Container

     

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

     

49.1。 RESTEasy WADL支持Servlet容器

     

RESTEasy WADL使用ResteasyWadlServlet来支持servlet容器。它可以注册到web.xml以启用WADL功能。以下示例显示ResteasyWadlServletweb.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的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文件

答案 1 :(得分:9)

RESTeasy中的WADL生成是一项尚未实现的功能。如果你想要它投票支持它。

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

答案 2 :(得分:4)

RESTEasy WADL Support(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,并可在/application.xml访问WADL。

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

答案 3 :(得分:2)

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

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