草庐IT

java - 如何将 Jackson ObjectMapper 与 Guice/Jersey Hook

我似乎无法正确注册我的JacksonObjectMapper模块。我正在使用Guice+Jersey+Jackson(FasterXML)堆栈。我已经了解了如何根据此处的各种问题自定义ObjectMapper。特别是,我声明了一个ContextResolver,标记为@javax.ws.rs.ext.Provider和@javax.inject.Singleton。我有一个GuiceServletContextListener:@OverrideprotectedInjectorgetInjector(){Injectorinjector=Guice.createInjector(ne

java - Jersey 2.x 带有属性的自定义注入(inject)注释

我正在从DropWizard0.7.1迁移到0.8.1。这包括从Jersey1.x迁移到2.x。在我的使用Jersey1.18.1的实现,我有一个实现InjectableProvider的MyProvider(为简单起见更改了所有类名)。这个类将创建MyInjectable对象,其中包含自定义注入(inject)注释MyToken。MyToken包含各种属性由MyInjectable传递和读取。最后,在Application类中,我注册了一个新的MyProvider实例,如下所示。我已经做了一些研究,但似乎无法全神贯注地思考如何在Jersey2.x中重新创建(或替换,我想)这样的场景。

java - JERSEY:如何使用注入(inject)注释检索调用 IP 或 URI?

我这里有一个使用JERSEY的REST服务器。我必须记录调用客户端的IP(最好是DNS)。有人可以指出使用哪些注入(inject)注释的方向吗?搜索“@Context”,但找不到任何合适的内容。谢谢格德 最佳答案 您可以将@ContextHttpServletRequest请求作为参数添加到您的请求处理程序方法中。然后使用request.getRemoteAddr()获取客户端IP 关于java-JERSEY:如何使用注入(inject)注释检索调用IP或URI?,我们在StackOve

java - 如何使用 Jersey 客户端对启用 JAAS 的 Web 服务器进行身份验证?

我有以下场景:服务器:Jetty(配置了JAAS)客户端:通过JUnit(通过Maven)调用Jersey我在Web服务器中设置了JAAS。我正在使用客户端部分作为测试。在服务器端,用户通过表单进行身份验证,并通过JAAS处理基本身份验证。显然,用户需要先通过身份验证才能查看某些页面。我希望能够在尝试访问安全页面之前通过Jersey登录。如何才能做到这一点?我检查过您是否可以定义过滤器,但我不太确定如何使用它。并且——一旦用户通过表单登录,我如何才能(从客户端)进入我真正感兴趣的页面?如果有人可以向我展示如何在客户端使用Jersey完成此操作,我将不胜感激。我有以下JUnit测试用例方

java - JAX-RS REST 服务如何通过注释处理身份验证?

我有一个用JAX-RS编写的RESTapi,我需要向它添加身份验证。到目前为止,我能找到的关于它的所有信息都有相关建议viaspring,我没有使用。有没有什么东西已经存在,或者是否容易编写,可以让我注释一个方法或整个类,从而强制出现authheader?如果重要的话,我正在使用tomcat6和jersey。类似于:@Path("api")publicclassApi{@GET@AuthenticationRequiredpublicResponsegetInfo(...){...}} 最佳答案 我想你想要importjavax.a

java - 为 JERSEY Web 服务编写测试用例的最佳方法是什么?

我有一个使用Jersey库实现的JAX-RSWeb服务,现在我想测试它。为了做到这一点,我想通过使用模拟服务预初始化它来在我的测试中托管该服务。托管此类服务和执行测试调用的最佳方式是什么?@Path("/srv")publicclassMyService{@GETpublicvoidaction(@ContextUriInfouri){...}}@TestpublicvoidmyTest(){MyServiceservice=newMyService();service.setSomething(...);//HowdoIhostit?//HowdoIcallit?}

java - Jersey:无法从 String 中反序列化 ArrayList 的实例

我有一个基于json的RESTWeb服务,使用以下方法实现:使用Jackson的Jetty、Jersey、Jersey-JSON。我的一个方法接收一个Person实例,它有一个List类型的字段。即:PublicclassPerson{Listnames;}如果我用一组名称调用它,一切正常!例如:{"names":["Jhon","Doe"]}但是如果这个人只有一个名字,我的客户会创建一个单一的值元素,例如:{"names":"Jhon"}当我尝试使用单个值调用服务时,出现异常:Cannotdeserializeinstanceofjava.util.ArrayListoutofVAL

java - GSON 需要 BEGIN_ARRAY 但实际是 BEGIN_OBJECT

当我在列表中只收到一个项目时出现此错误。我在服务器端RESTWeb服务中使用Jersey,只有当List返回一个元素并且它有0个元素时,我才会得到错误,我得到java.lang.NullPointerException但是当它有多个时,它会完美地工作,这就是我的做法:@GET@Path("getproject")@Produces(MediaType.APPLICATION_JSON)publicListgetPagedProjects(@QueryParam("offset")intoffset,@QueryParam("limit")intlimit,@QueryParam("se

java - Jersey 测试框架 2.5 - 测试 POST 方法

我试图找到一些手册如何使用jersey框架测试POST方法,只有GET方法的示例。例子如下:@POST@Path("add")@Consumes(MediaType.APPLICATION_XML)@Produces(MediaType.APPLICATION_XML)publicResponseaddUser(JAXBElementuser){intcode=userService.addUser(user.getValue());if(code==500){returnResponse.status(500).build();}returnResponse.status(code)

java - 如何在运行 grizzly 的 java se 上启用 Web 服务(jaxrs/jersey)中的 CDI 注入(inject)?

如何允许CDI将资源注入(inject)到restfulweb服务资源中?我使用weld2(cdi)、jersey(jaxrs)和grizzly(网络服务器)在标准java上运行。这是我的简单网络资源:importtraining.student.StudentRepository;importjavax.inject.Inject;importjavax.ws.rs.*;@Path("student")publicclassStudentWebResource{@InjectprivateStudentRepositorystudentRepository;@GET@Path("co