Tag: jersey 1.0

jersey客户端可以使用JSON将JAXB对象发布到服务器吗?

我找到了很多关于如何设置jersey服务器以便它可以生成和使用JAXB绑定对象的示例,但是我很难找到如何让客户端发布相同的JAXB绑定对象的示例。 此示例显示如何使用XML执行此操作 。 我正在寻找一个展示如何使用JSON的方法。 我甚至不确定这是否可行。 post方法的javadoc是不明确的。 我的post看起来像这样: Client client = Client.create(); WebResource resource = client.resource(uri); ClientResponse response = resource.type(MediaType.APPLICATION_JSON) .post(ClientResponse.class, instanceWithXmlRootElementAnnotation); 当我尝试这个时,我的服务器获取请求,但@FormParam的字段总是作为空发送。 这是我的服务器端方法的签名: @POST @Path(“apath”) @Consumes(MediaType.APPLICATION_JSON) public String postAPath(@FormParam(“InstanceWithXmlRootElementAnnotation”) InstanceWithXmlRootElementAnnotation instanceWithXmlRootElementAnnotation) { //instanceWithXmlRootElementAnnotation is always null 我想知道的是,我是否应该使用instanceWithXmlRootElementAnnotation 。 如果这是传统的Web服务,我将使用JAXB 生成一个对象供客户端使用并通过生成的类发送。 但是从我从我链接的示例中收集的内容来看,这个人正在发送源代码,而不是生成的类。

如何在请求filter中获取表单参数

我正在尝试在请求filter中获取请求的表单参数: @Override public ContainerRequest filter(final ContainerRequest request) { final Form formParameters = request.getFormParameters(); //logic return request; } 但是,表格似乎总是空的。 HttpRequestContext.getFormParameters()文档说: 获取请求实体的表单参数。 此方法将确保缓冲请求实体,以便应用程序可以使用它。 返回:表单参数,如果有请求实体且内容类型为“application / x-www-form-urlencoded”,否则将返回不包含参数的实例。 我的资源是用@Consumes(“application/x-www-form-urlencoded”)注释的,虽然它在请求filter之后才会匹配 – 这就是为什么这不起作用? 我尝试做一些研究,但未能找到任何确凿的证据certificate这是否可行。 有这个为期4年的讨论 ,Paul Sandoz说: 如果您正在使用Jerseyfilter或使用HttpRequestContext您可以获得如下表单参数:[到Jersey 1.1.1的断开链接HttpRequestContext.getFormParameters ] 我还发现了这个有关如何在请求filter中获取multipart / form-data表单字段的3年讨论 。 其中,Paul Sandoz使用以下代码: // Buffer InputStream in = request.getEntityInputStream(); if (in.getClass() != ByteArrayInputStream.class) { // Buffer input ByteArrayOutputStream […]

如何为使用JSON JAXB绑定的Jersey REST API生成文档?

现在我已经想出如何使用JAXB生成JSON我可以在我的服务器上请求/响应它,我想弄清楚如何为不使用Java的人生成有用的文档。 我的服务器代码如下所示: @POST @Path(“apath”) @Consumes(MediaType.APPLICATION_JSON) public String postAPath(InstanceWithXmlRootElementAnnotation instanceWithXmlRootElementAnnotation) { 如果有人使用Java,这一切都很好。 我只是给它们带有InstanceWithXmlRootElementAnnotation类的Jar,并告诉他们发送它(是的,还有一些工作,忽略那些细节)。 如果他们使用其他语言,我不知道如何告诉他们有效负载的格式以及如果它返回InstanceWithXmlRootElementAnnotation会对服务器产生什么期望。 如何生成解释JSON有效负载的预期格式的文档?

Weblogic 12c:Jersey的首选web-inf-classes和prefer-application-packages

我必须在Weblogic 12c服务器(12.2.1)上同时使用两个(奇怪的是)“ prefer-web-inf-classes ”和“ prefer-application-packages属性weblogic.xml” 它是基于Jersey 1.9的REST应用程序。 *(Jersey 1.x JAX-RS RI)和Guice。 1.为什么要使用:prefer-web-inf-classes 如果你有多个WAR,你必须在war / lib的级别放置guice-jersey / guice的库, 否则你会得到Multibindings Error 。 必须指出prefer-web-inf-classes为true 。 这种方式正常! 我试图以相同的方式使用prefer-application-packages和package( com.sun.jersey.guice.spi.container.servlet /com.google.inject.servlet等等 ),但没办法。 注意:无法在EAR级别排除此库。 2.为什么要使用:prefer-application-packages 要在Weblogic 12c(12.2.1)上使用Jersey 1.x JAX-RS RI,所以我必须指出以下包( Weblogic使用Jersey 2的其他方式,以及不同版本的Jackson库等 ) 如果以这种方式表示,它在Jersey 1.X上完美运行。 。 我已分别探讨了两场战争,并且工作得很好……但是,请记住我的朋友我有两场战争……所以…. 概要 我不能同时使用这两个属性(在weblogic.xml上使用这两个属性部署错误..),但它需要: 对于Guice Filter的问题,需要将prefer-web-inf-classes设置为true,以便在war-lib级别使用guice-servlet.jar / jersey-guice.jar。 要使用Jersey 1.x,需要使用….. prefer-application-package 问题 :如何将两者结合使用其中之一?

内省泽西资源模型泽西2.x.

我编写了自己的扫描程序来浏览我的JAX-RS资源,并使用jersey-server-1.18.1打印出方法名称和路径。 问题是当我将相同的代码迁移到2.16(将包名称从com.sun.*更改为org.glassfish.* )时,它将无法正常工作。 深入挖掘我发现那些必需的jersey-server类不久就公开了。 谁知道原因? 如何将我的代码从1.x迁移到2.x? 实际上没有关于此迁移的文档。 所有帮助赞赏! 下面是1.x的代码 import com.wordnik.swagger.annotations.ApiOperation; import com.sun.jersey.api.model.AbstractResource; import com.sun.jersey.api.model.AbstractResourceMethod; import com.sun.jersey.api.model.AbstractSubResourceLocator; import com.sun.jersey.api.model.AbstractSubResourceMethod; import com.sun.jersey.server.impl.modelapi.annotation.IntrospectionModeller; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * […]

如何在Jersey调用之前获取与URI匹配的资源方法?

我正在尝试实现一个ContainerRequestFilter ,它对请求的参数进行自定义validation。 我需要查找将与URI匹配的资源方法,以便我可以从方法的参数中删除自定义注释。 根据这个答案,我应该能够注入ExtendedUriInfo ,然后使用它来匹配方法: public final class MyRequestFilter implements ContainerRequestFilter { @Context private ExtendedUriInfo uriInfo; @Override public ContainerRequest filter(ContainerRequest containerRequest) { System.out.println(uriInfo.getMatchedMethod()); return containerRequest; } } 但getMatchedMethod显然会返回null ,一直到实际调用该方法为止(此时对我来说进行validation为时已晚)。 在调用资源方法之前,如何检索将与给定URI匹配的方法? 对于那些感兴趣的人,我正在尝试滚动我自己的必需参数validation,如JERSEY-351中所述 。