【发布时间】:2011-10-06 10:50:24
【问题描述】:
我已经搜索了一天半,但找不到任何有用的答案... (无论如何,我知道我肯定知道如何编写网络服务:D)
这是我的情况: 我正在尝试设置一个提供返回对象名称 Greeting 的 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;
}
}
Web 服务只返回一个 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 的详细结构的信息 :( 但是其他与 web 服务对话的客户可能需要它(是的,这很简单——但这只是一个例子!)
我需要配置什么吗?也许是application.wadl?我不知道-就像我说的那样在谷歌上搜索-将近两天:( 请帮我! 顺便说一句 - 我正在使用 Netbeans、Java 7、JEE6 和 Jersey
编辑
也许我没问对... 如何自动为 Greeting 提供所需的 .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>
我发现,响应表示中必须有一个参数“元素” - 我该如何设置它?是的,我可以使用 Netbeans 的 WADL 插件并手动输入 - 但我必须为元素添加模式引用 - 在本例中为“Greeting” - 我仍然不知道如何为 Greeting 设置命名空间。正确分类:(
编辑
我可能已经找到了我正在寻找的东西.. http://www.verborgh.be/articles/2009/11/21/easy-restfull-jax-rs-webservices-and-extended-wadl-on-glassfish-v3-using-ant-/ 这篇文章解释了我想知道的:) 在覆盖 WADL 生成的最后一步仍然有一个异常,但我认为这是一个版本错误 - 将尝试更新球衣或找到解决方法!
【问题讨论】:
-
不确定您的问题/问题到底是什么?
-
也许我没问对...如何自动为 Greeting 提供所需的 .xsd 架构?
-
如果你使用 NetBeans 7 我建议使用向导,将 getGreeting 添加到自动创建的 GreetingFacadeREST 类中,然后查看结果:netbeans.org/kb/docs/websvc/rest.html
-
结果绝对是我不想要的:( .xml 中没有类似 meber 类型的信息等。我想为使用的客户提供额外的 .xsd webservice,他们可以重建类,这些类是由一些 web 服务方法返回的
标签: java web-services rest xsd