Могу ли я получить файл application.wadl с помощью RESTeasy? - PullRequest
11 голосов
/ 14 марта 2011

Мне нужно получить WADL-файл для службы RESTful.Я знаю, что в случае использования трикотажа он доступен как http://localhost:8080/application.wadl.Но я использую RESTeasy.

Могу ли я сделать то же самое в моем каркасе?

Ответы [ 4 ]

11 голосов
/ 07 февраля 2013

Последние версии:

Цитирование Глава 49. Поддержка RESTEasy WADL :

Глава 49. Поддержка RESTEasy WADL

49,1.Поддержка RESTEasy WADL для контейнера сервлетов
49.2.Поддержка RESTEasy WADL для HTTP-сервера Sun JDK
49.3.Поддержка RESTEasy WADL для Netty Container
49.4.Поддержка RESTEasy WADL для контейнера Undertow

RESTEasy имеет собственную поддержку создания WADL для своих ресурсов и поддерживает несколько различных контейнеров.Следующий текст покажет вам, как использовать эту функцию в разных контейнерах.

49.1.Поддержка RESTEasy WADL для контейнера сервлетов

RESTEasy WADL использует ResteasyWadlServlet для поддержки контейнера сервлетов.Его можно зарегистрировать в 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.И затем к WADL можно получить доступ с настроенного URL:

/application.xml

Обходной путь для более старых версий

Существует обходной путь: плагин maven с именем maven-wadl-pluginДжерси, который также работает для генерации WADL для сервисов, закодированных с использованием RESTEasy.

Вот как это использовать.

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>

Обратите внимание на элементы baseUri и packagesResourceConfig.Вы должны изменить их, чтобы они отражали конфигурацию вашего проекта.Вы также можете изменить версию плагина (я использовал 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 (схемаресурсы - он используется приложением. wadl) должен быть сгенерирован.

Редактируйте и используйте их по своему усмотрению.

PS .: Помните, что это очень простое использование maven-wadl-плагин.Это может сделать намного больше.Чтобы узнать это лучше, обратитесь к zip-файлу в http://search.maven.org/remotecontent?filepath=com/sun/jersey/samples/generate-wadl/1.12/generate-wadl-1.12-project.zip

9 голосов
/ 26 мая 2011

Создание WADL в RESTeasy - это функция, которая еще не реализована. Если хотите, идите и проголосуйте за это.

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

4 голосов
/ 04 января 2017

См. Поддержка 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.

Примечание : Рекс и Джаскират уже упоминали ранее, что RESTEASY-166 использовался для управления реализацией этой функции. Похоже, это было завершено в 3.0.14.

2 голосов
/ 14 марта 2013

мы можем сгенерировать wadl с помощью проекта maven с POM.XML

https://issues.jboss.org/browse/RESTEASY-166 проверьте комментарии здесь .. !!

...