Tag: jersey

jackson与jaxb

在泽西岛使用jacksonJSON处理器时,我何时以及为什么需要在两者之间使用JAXB注释? Object->JAXB->JSON jackson还提供自己的JAX-RS提供程序,直接使用Object->JSON 。 这种方法缺少什么? 或者为什么我更喜欢另一个 ps:我也用spring

rest。 新泽西州。 如何以编程方式选择要返回的类型:JSON还是XML?

我有两个问题: 1.我可以创建一个类,使用JAXB注释(对于XML支持)进行注释,并在web.xml声明 com.sun.jersey.api.json.POJOMappingFeature true 对于JSON(jackson图书馆)的支持? 或者我需要为JSON和XML单独创建两个类? 或者可能存在一些更优雅的方式来使REST服务返回JSON和XML? 2.我如何以编程方式选择要返回的类型(JSON或XML)? 谢谢。

使用Jersey将REST资源作为List 获取

我正在尝试在Jersey中编写一个generics函数,它可以用来通过REST获取相同类型的对象列表。 我基于此论坛中的信息: 链接 @Override public List fetchResourceAsList(String url) { ClientConfig cc = new DefaultClientConfig(); Client c = Client.create(cc); if (userName!=null && password!=null) { c.addFilter(new HTTPBasicAuthFilter(userName, password)); } WebResource resource = c.resource(url); return resource.get(new GenericType<List>() {}); } 但是这不起作用。 如果我尝试执行它,我会收到以下错误: SEVERE: A message body reader for Java class java.util.List, and Java type java.util.List, and MIME media type […]

接受并返回对象的REST服务。 怎么写客户端?

我已经声明了两个REST Web服务。 一个只返回一个对象的人。 和其他接受对象并返回另一个对象。 使用POJO Order.java。 @XmlRootElement public class Order { private String id; private String description; public Order() { } @XmlElement public String getId() { return id; } @XmlElement public String getDescription() { return description; } // Other setters and methods } Web服务定义为 @Path(“/orders”) public class OrdersService { // Return the list of orders […]

jersey – StreamingOutput作为响应实体

我在Jersey Resource类中实现了流输出。 @GET @Path(“xxxxx”) @Produces(BulkConstants.TEXT_XML_MEDIA_TYPE}) public Response getFile() { FeedReturnStreamingOutput sout = new FeedReturnStreamingOutput(); response = Response.ok(sout).build(); return response; } class FeedReturnStreamingOutput implements StreamingOutput { public FeedReturnStreamingOutput() @Override public void write(OutputStream outputStream) { //write into Output Stream } } 问题是尽管在调用FeedReturnStreamingOutput之前从资源发回响应但是Jersey客户端等待直到FeedReturnStreamingOutput执行完成。 客户代码: Client client = Client.create(); ClientResponse response = webResource //headers .get(ClientResponse.class); //The codes underneath executes […]

如何在POST期间获取不同资源的JAX-RS @Path?

我有两个REST类用于简单的Web服务(Jersey和GlassFish),它涉及用户资源 – 一个用于操作所有用户(例如,@POSTing的工厂),另一个用于个人用户(例如,@ GET,@ PUT,@删除)。 他们在: @Stateless @Path(“users”) public class AllUsersResource {…} @Stateless @Path(“user”) public class OneUserResource {…} 分别。 在POST到AllUsersResource时,我想返回新用户的位置(通过Response.created(uri).build() ),例如, http://localhost:8080/…/user/152 我的问题是如何做到这一点。 AllUsersResource注入了@Context UriInfo uriInfo,但这并没有让我获得OneUserResource的@Path信息,只获得当前调用的信息(“users”)。 我最终使用它的方式只是使用reflection,但我担心它是脆弱和不洁的: OneUserResource.class.getAnnotation(Path.class).value(); 搜索StackOverflow我发现尝试的其他事情如下,但没有成功: com.sun.jersey.api.core.ResourceContext javax.ws.rs.core.UriInfo.getMatchedResources() @javax.inject.Inject OneUserResource oneUserRes; 任何帮助都会很棒!

WebApplicationException与Response

在REST服务中向客户端返回响应的所有可能性中,我看到了两种看起来相同的可能性:抛出WebApplicationException (可能使用Response实例)或返回Response实例。 为什么使用一种可能性而不是另一种,因为结果相同? 这与使用的REST框架有关,可以配置为在exception和常规响应之间做出不同反应吗?

如何在不使用tomcat的情况下运行jersey-server webservice服务器

这是我第一次处理网络服务。 简单地说,我需要从泽西网络服务客户端(在javascript中实现的网页内)发送一个post请求到我的maven模块之一的jersey服务。 正如我所说,我已经在我的一个maven模块中创建了jersey-server,我想以某种方式运行它(我不知道如何运行Web服务程序。)在启动我的实现的客户端之前。 通过在网上搜索,我看到了很多例子,但他们都使用了tomcat。 所以我的第一个问题是,我是否需要使用tomcat(或类似的东西)才能运行Web服务? 其次,下面我分享了我的泽西服务器模块。 我怎么能开始运行呢? package com.exampleProject.rest; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.List; @Path(“/test”) @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public class SiderRecommender { @POST @Path(“/functiontest”) public List sampleFunction() { // return something here. I removed it for simplicity. } }

泽西岛:InjectableProvider没有拿起 – spring

我目前正在尝试使用Jersey创建一个InjectableProvider ,但是我无法让Jersey拿起它。 除了在实现上使用@Provider注释之外,我找不到任何使用它的真实示例,甚至找不到它如何获取它。 看似在泽西岛内写作的人在某些post中暗示这足以让它捡起来。 我是否需要指定一些SPI服务文件,或者将其添加到某个工厂? 注意:我在Glassfish 3.1中运行,并使用Spring 3.1。 Spring可能以某种方式接管Provider的自动加载似乎是合理的。 但是,我只是不知道。 我不是在使用Spring来管理下面建议的InjectableProvider,也不是我试图以其他方式添加它,这可能是我的问题。 import com.sun.jersey.core.spi.component.ComponentContext; import com.sun.jersey.spi.inject.Injectable; import com.sun.jersey.spi.inject.PerRequestTypeInjectableProvider; public abstract class AbstractAttributeInjectableProvider extends PerRequestTypeInjectableProvider { protected final Class type; public AbstractAttributeInjectableProvider(Class type) { super(type); this.type = type; } @Override public Injectable getInjectable(ComponentContext componentContext, AttributeParam attributeParam) { return new AttributeInjectable(type, attributeParam.value()); } } 基本实施: import javax.ws.rs.ext.Provider; @Component […]

Jersey:默认缓存控制到无缓存

在编写RESTful Web服务时,如果我在客户端(当前是.NET胖客户端)上启用任何类型的缓存,我会遇到问题。 默认情况下,Jersey不发送任何类型的缓存控制头,因此客户端会自动缓存大多数页面(这似乎是有效的行为)。 我想让Jersey默认发送一个“no-cache”的缓存控件,然后特别是响应覆盖缓存控件。 有没有办法和泽西这样做? 我发现RESTeasy能够使用@NoCache注释来指定整个类的设置,但我没有找到与Jersey类似的东西。