草庐IT

java - JAX-RS:每个资源的选项

我正在使用带有XMLHttpRequest(XHR)的JAX-RS接口(interface)。由于XHR预检,XHR在调用真实资源之前总是发送OPTIONS。现在我有几十种方法,我需要每个资源的选项。有没有办法自动执行此操作?我不想写很多方法,比如:@OPTIONS@Path("/{id}")@PermitAllpublicResponseoptionsById(){returnResponse.status(Response.Status.NO_CONTENT).build();}@OPTIONS@Path("/{id}/data")@PermitAllpublicResponseo

java - AsyncResponse ConnectionCallback 不会在 Jersey 中触发

对于异步编程,Jersey(JAX-RS)提供了一个ConnectionCallback回调,在连接断开时执行。来自Jerseydocs:Assomeasyncrequestsmaytakelongtimetoprocesstheclientmaydecidetoterminateitsconnectiontotheserverbeforetheresponsehasbeenresumedorbeforeithasbeenfullywrittentotheclient.TodealwiththeseusecasesaConnectionCallbackcanbeused.Thiscal

java - Jersey webservice 可扩展的下载文件和回复客户端的方法

我需要用Jersey构建一个网络服务,从另一个服务下载一个大文件并返回给客户端。我希望Jersey将一些字节读入缓冲区并将这些字节写入客户端套接字。IwouldlikeittousenonblockingI/OsoIdontkeepathreadbusy.(Thiscouldnotbeachieved)@GET@Path("mypath")publicvoidgetFile(final@SuspendedAsyncResponseres){Clientclient=ClientBuilder.newClient();WebTargett=client.target("http://we

java - 具有相同路径的 JAX-RS 多个类

使用JAX-RS,是否可以将多个类分配给单个路径?我正在尝试做这样的事情:@Path("/foo")publicclassGetHandler{@GETpublicResponsehandleGet(){...}@Path("/foo")publicclassPostHandler{@POST@Consumes(MediaType.APPLICATION_JSON)publicResponsehandlePost(){...}这显然是不允许的,因为我得到:com.sun.jersey.api.container.ContainerException:Arootresource,clas

java - ResourceContext.matchResource(URI) 的 Jersey 2 替代品是什么?

在Jersey2.0下,如何找出任意URI映射到的资源?在Jersey1.x下,我会使用ResourceContext.matchResource(URI).我正在尝试做什么:我正在尝试处理通过URI引用另一个资源的传入请求。例如,这是一个将用户链接到部门的操作。POST/departments/5{"user":"http://example.com/users/10"}POST/departments/5解析为:classDepartmentResource{@POSTvoidlinkUser(){...}}为了满足这个请求,我需要将URI解析回UserResource,然后从那里

java - Jersey 异步 ContainerRequestFilter

我有一个JerseyRESTAPI并且正在使用ContainerRequestFilter来处理授权。我还在所有端点上使用@ManagedAsync,这样我的API就可以为数千个并发请求提供服务。我的授权过滤器命中了一个远程服务,但是当过滤器运行时,Jersey还没有将当前线程添加到它的内部ExecutorService,所以我完全失去了异步的好处。我可以告诉Jersey我希望这个ContainerRequestFilter是异步的吗?@Priority(Priorities.AUTHORIZATION)publicclassAuthorizationFilterimplementsC

java - Jersey 错误 : MessageBodyReader not found for media type=application/json

我正在尝试使用Jersey作为框架来实现一个小型RESTAPI,原则上代码工作正常但是当我尝试对哈希表执行“GET”时,出现以下错误:nov23,20144:27:40PMorg.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptoraroundReadFromGRAVE:MessageBodyReadernotfoundformediatype=application/json,type=interfacejava.util.Map,genericType=java.u

java - 从运行 Java Jersey Rest API 的 HTTP 服务器传输大文件

我正在使用JavaJDK1.7和JerseyWeb服务框架编写Web服务。我需要提供的其中一件事是允许经过身份验证的客户端下载某些大型数据文件(1-3GB)的方法。理想情况下,我希望这是一个暂停和恢复类型的可下载选项。我尝试了jerseymulti-partAPI,并能够让它在我的客户端机器上运行高达400MB,但超过400MB时它会遇到内存不足的问题。我还担心服务器在面临同时下载请求时可能会失败。关于如何做到这一点的任何想法?Netty是一个选择吗?关于如何将Netty集成到现有的基于Jersey的Web服务中的任何指示?是否有其他框架可以帮助实现这一目标?我确实必须将java用于W

java - Jersey REST 客户端 - 将自定义 MediaType 视为 MediaType.APPLICATION_JSON

我正在使用Jersey启用JacksonFeature编写REST客户端,用于强制我指定其自定义命名内容类型的Web服务,即使它只是常规JSON。换句话说,当我这样做时:Requestrequest=buildMySampleRequestPojo();Responseresponse=requestBuilder.post(Entity.entity(request,MediaType.APPLICATION_JSON));服务提示我使用了无效的内容类型。我可以通过指定他们自定义命名的媒体类型来代替MediaType.APPLICATION_JSON常量来解决这个问题:Respons

java - Jersey API + JPA/Hibernate Criteria 延迟加载不起作用

这是我拥有的一个简化的POJO:@Entity@Table(name="Patient")@Inheritance(strategy=InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name="Discriminator",discriminatorType=DiscriminatorType.STRING)@DiscriminatorValue(value="P")@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)publicclassPatientimplementsSerializ