我需要为 RESTful 服务获取 WADL 文件。我知道如果使用球衣,它可以作为http://localhost:8080/application.wadl
. 但我使用 RESTeasy。
我可以在我的框架案例中做同样的事情吗?
我需要为 RESTful 服务获取 WADL 文件。我知道如果使用球衣,它可以作为http://localhost:8080/application.wadl
. 但我使用 RESTeasy。
我可以在我的框架案例中做同样的事情吗?
第 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。
以下是如何使用它。
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 支持(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 完成的。
我们可以在 Maven 项目的帮助下使用 POM.XML 生成一个 wadl
https://issues.jboss.org/browse/RESTEASY-166在这里查看评论..!!