【发布时间】:2011-03-14 16:55:09
【问题描述】:
我需要为 RESTful 服务获取 WADL 文件。我知道如果使用球衣,它可以作为http://localhost:8080/application.wadl 使用。但我使用 RESTeasy。
我可以在我的框架案例中做同样的事情吗?
【问题讨论】:
标签: java web-services resteasy wadl
我需要为 RESTful 服务获取 WADL 文件。我知道如果使用球衣,它可以作为http://localhost:8080/application.wadl 使用。但我使用 RESTeasy。
我可以在我的框架案例中做同样的事情吗?
【问题讨论】:
标签: java web-services resteasy wadl
引用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 ContainerRESTEasy 支持为其资源生成 WADL,它支持多种不同的容器。以下文字将向您展示如何在不同的容器中使用此功能。
49.1。 RESTEasy WADL 对 Servlet 容器的支持
RESTEasy WADL 使用
ResteasyWadlServlet来支持servlet 容器。它可以注册到web.xml以启用 WADL 功能。下面是一个例子来展示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 的 maven 插件,由 jersey 人开发,它也可以为使用 RESTEasy 编码的服务生成 WADL。
这里是如何使用它。
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>
注意baseUri 和packagesResourceConfig 元素。您必须更改它们以反映您的项目配置。您可能还想更改插件的版本(我使用的是 1.17)。
创建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" />
转到项目文件夹并运行以下命令:
$ 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文件
【讨论】:
RESTeasy 中的 WADL 生成是一项尚未实现的功能。如果你想要它,就去投票吧。
【讨论】:
请参阅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 完成的。
【讨论】:
我们可以在maven项目的帮助下用POM.XML生成一个wadl
https://issues.jboss.org/browse/RESTEASY-166 在这里查看 cmets..!!
【讨论】: