RESTful Webservice - Как предоставить .xsd пользовательских классов в выводе xml - PullRequest
1 голос
/ 06 октября 2011

Я искал полтора дня, но не могу найти полезного ответа ... (во всяком случае, знаете, я определенно знаю, как писать веб-сервисы: D)

Вот моя ситуация: Я пытаюсь настроить среду RESTful Webservices, которая возвращает имена объектов Приветствие:

Greeting.class

@XmlRootElement(name = "greeting")
public class Greeting {

    private String message;
    private String name;

    public Greeting() {
    }

    public Greeting(String message, String name) {
        this.message = message;
        this.name = name;
    }

    @XmlElement
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    @XmlElement
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Webservice просто возвращает экземпляр Greeting ... и все!

GreetingService.class

@Path("sayHello")  
public class GreetingService {
      @Context
      private UriInfo context;
      public GreetingService() {
      }

      @GET
      @Produces("application/xml")
      public Greeting getJson(@QueryParam("name") String name) {
          return new Greeting(getGreeting(), name);
      }

      private String getGreeting() {
          return "Good " + (Calendar.getInstance().get(Calendar.AM_PM) == Calendar.AM ? "Morning" : "Afternoon");
      }
} 

И результат в браузере такой Браузер

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<greeting>
    <message>Good Afternoon</message>
</greeting>

Информации о подробной структуре Greeting.class не предоставлено :( Но другим клиентам, которые общаются с веб-сервисом, это может понадобиться (да, это просто - НО это только пример!)

Нужно ли что-нибудь настраивать? Может быть, application.wadl? Понятия не имею - гуглил как я сказал - почти два дня :( Пожалуйста, помогите мне! Кстати, я использую Netbeans, Java 7, JEE6 и Джерси


EDIT

Может быть, я не правильно спросил ... Как я могу автоматически предоставить необходимую схему .xsd для приветствия?

Вот application.wadl, который в данный момент предоставляет ...

<application xmlns="http://research.sun.com/wadl/2006/10">
<doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 1.8 06/24/2011 12:17 PM"/>
    <resources base="http://localhost/iOSWebServices/resources/">
        <resource path="greeting">
            <method id="greet" name="GET">
                <response>
                    <representation mediaType="application/xml"/>
                </response>
            </method>
            <method id="putXml" name="PUT">
                <request>
                    <representation mediaType="application/xml"/>
                </request>
            </method>
        </resource>
    </resources>
</application>

Я обнаружил, что в представлении ответа должен быть параметр "элемент" - КАК его установить? Да, я мог бы использовать плагин WADL для Netbeans и ввести его вручную - но мне нужно добавить ссылку на схему элемента - в данном случае «Приветствие» - и я до сих пор не знаю, как установить пространство имен для Приветствия. класс правильно: (


EDIT

Я мог бы найти то, что искал .. http://www.verborgh.be/articles/2009/11/21/easy-restfull-jax-rs-webservices-and-extended-wadl-on-glassfish-v3-using-ant-/ Эта статья объясняет, что я хотел знать :) Еще есть одно исключение на последнем шаге при переопределении поколения WADL, но я думаю, что это ошибка версии - я попытаюсь обновить майку или найти обходной путь!

Ответы [ 3 ]

1 голос
/ 06 октября 2011

Поскольку вы используете IDE NetBeans, может помочь следующее:

0 голосов
/ 10 октября 2011

Я мог бы найти то, что искал .. http://www.verborgh.be/articles/2009/11/21/easy-restfull-jax-rs-webservices-and-extended-wadl-on-glassfish-v3-using-ant-/ В этой статье объясняется, что я хотел знать :) Еще есть одно исключение на последнем шаге при переопределении поколения WADL, но я думаю, что этобаг версии - попробую обновить майку или найти обходной путь!

0 голосов
/ 06 октября 2011

Существует инструмент генерации схемы JAXB schemagen, который может автоматически генерировать XSD для класса Java.

См. http://download.oracle.com/javaee/5/tutorial/doc/bnbah.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...