java – 带@Consumes,@ Produces和JAXB的简单JAX-RS示例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 带@Consumes,@ Produces和JAXB的简单JAX-RS示例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2108字,纯文字阅读大概需要4分钟。
内容图文
![java – 带@Consumes,@ Produces和JAXB的简单JAX-RS示例](/upload/InfoBanner/zyjiaocheng/816/3bd355ffb34349fa8695d5217ef8cead.jpg)
我正在尝试使用@Produces,@ Consumes注释和JAXB创建和运行JAX-RS的简单示例.
@Stateless
@LocalBean
@Path("/hotel")
public class RestMain {
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("{hotelId}")
public HotelRESTInfo read(@PathParam("hotelId") long hotelId) {
HotelDataSourceFake hotelDataSourceFake = new HotelDataSourceFake();
HotelRESTInfo hotelInfo = hotelDataSourceFake.getFakePlaceById(hotelId);
return hotelInfo;
}
}
web.xml中:
<servlet>
<servlet-name>REST App</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
第二个应用程序是客户端.
现在我有以下客户端代码:
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
...
Client client = Client.create();
String uri ="http://localhost:8080/RESTJEE/rest/hotel/" + hotelId;
WebResource resource = client.resource(uri);
ClientResponse response = resource.accept("application/xml").get(ClientResponse.class);
HotelRESTInfo hotelRestInfo = response.getEntity(HotelRESTInfo.class);
但我不想使用jersey的Client,ClientResponse和WebResource.
我想用@Consumes做这个.
客户端appliaction web.xml是否应包含一些其他参数?
双方(客户端和服务器)包含HotelRESTInfo类:
@XmlRootElement
public class HotelRESTInfo {
...
}
解决方法:
我认为你是不匹配的东西.
一方面有HttpClient发出请求,另一方面有HttpServer构建响应.这是基本的,我想你得到它.
问题是@GET read()方法使用请求体,并生成响应体.
所以你可以:
@GET
@Consumes(MediaType.APPLICATION_XML) //client sends also xml
@Produces(MediaType.APPLICATION_XML)
@Path("{hotelId}")
public HotelRESTInfo read(@PathParam("hotelId") long hotelId) {
(...)
}
显然,您希望您的客户端使用Web服务,因此@Consume在客户端明确有意义.
不幸的是,JaxRS是在2008年左右在服务器端构建的,没有考虑与Java客户端的协同作用. @Consumes绝对是一个服务器注释,我没有在客户端的documentation anything about reusing注释中看到过.
在JaxRS 2规范的努力下,Jersey客户端是最新的.您的问题表明这些规格可能很难写!
内容总结
以上是互联网集市为您收集整理的java – 带@Consumes,@ Produces和JAXB的简单JAX-RS示例全部内容,希望文章能够帮你解决java – 带@Consumes,@ Produces和JAXB的简单JAX-RS示例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。