Я искал полтора дня, но не могу найти полезного ответа ...
(во всяком случае, знаете, я определенно знаю, как писать веб-сервисы: 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, но я думаю, что это ошибка версии - я попытаюсь обновить майку или найти обходной путь!