【问题标题】:Can I get application.wadl file using RESTeasy?我可以使用 RESTeasy 获取 application.wadl 文件吗?
【发布时间】:2011-03-14 16:55:09
【问题描述】:

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

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

【问题讨论】:

    标签: java web-services resteasy wadl


    【解决方案1】:

    最新版本:

    引用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 插件,由 jersey 人开发,它也可以为使用 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文件

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        请参阅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 完成的。

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-11-26
            • 2010-12-28
            • 1970-01-01
            • 2015-11-11
            • 2020-12-04
            • 1970-01-01
            • 1970-01-01
            • 2016-04-06
            相关资源
            最近更新 更多