当前位置: 首页 > 面试题库 >

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

卫念
2023-03-14
问题内容

我需要获取RESTful服务的WADL文件。我知道如果使用运动衫,它可以作为提供http://localhost:8080/application.wadl。但是我使用RESTeasy。

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


问题答案:

引用第49章。RESTEasy
WADL支持

Chapter 49. RESTEasy WADL支持

49.1。RESTEasy
WADL支持Servlet容器

49.2。对Sun JDK HTTP Server

49.3的RESTEasy
WADL支持。RESTEasy
WADL对Netty Container
49.4的支持
。RESTEasy
WADL支持Undertow容器

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

49.1。RESTEasy WADL支持Servlet容器

RESTEasy
WADL用于ResteasyWadlServlet支持servlet容器。可以注册web.xml启用WADL功能。这是显示ResteasyWadlServletin
用法的示例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插件也可以为使用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文件。



 类似资料:
  • 问题内容: 使用Apache POI时,我(以编程方式)从MS Word文件获取的字符串与使用MS Word打开文件时看到的文本不同。 使用以下代码时: 输出是一行,其中包含许多“无效”字符(是,“框”)和许多不需要的字符串,例如“ ”,“ ”(“#”为数字),“ ”等。 以下代码“修复”了单行问题,但保留了所有无效字符和不需要的文本: 我不知道我是否使用错误的方法来提取文本,但这就是我在查看PO

  • 问题内容: 我有一个带有许多子元素的React(15.5.4)组件,其中一些是HTML元素,另一些是其他React组件。 我正在使用服务器渲染,并且在服务器和客户端上需要相同的行为。客户将使用React的生产版本。 我需要遍历子级并确定一种特定类型的React组件。所以我首先想到的是迭代使用并寻找组件名称。 似乎并且不存在。 现在,存在,它可以是一个字符串(对于HTML元素),也可以是一个函数(对

  • 我可以用这个条件对象来wait/notify/notifyall和synchronized方法吗? 还是坚持带锁的组合更好? 此外:

  • 问题内容: 使用bcp时如何使用长查询指定输入sql文件?我尝试使用该选项,但它一直抱怨没有任何其他信息的命令行错误。这可能吗? 问题答案: 就我而言,BCP实用程序仅支持直接写入命令行的Transact-SQL查询。前任: bcp“从AdventureWorks.Sales.Currency中选择名称” queryout Currency.Name.dat -T -c 根据其参考,“-i”选项:

  • 问题内容: 如果我有这个: 如果可能的话,如何在不实际调用方法的情况下获得对f.bar的引用? 编辑添加:我想做的是编写一个对f的成员进行迭代并对其执行某些操作的函数(不重要)。属性让我感到震惊,因为仅在getattr()中命名它们会调用其__get __()方法。 问题答案: (下图)在给定对象的中查找,如果存在则返回关联的值。如果不是其中的关键,则搜索对象的MRO 。如果找不到密钥,则引发。