Tag: jersey 2.0

泽西2.x不支持POJO到json?

虽然我试图通过使用jersey.i将java对象转换为json对象,但我有一个例外。 Java代码:-( POJO) package org.jersey.media.type; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class MyJaxbBean { public String name; public int age; public MyJaxbBean() {} // JAXB needs this public MyJaxbBean(String name, int age) { this.name = name; this.age = age; } } 资源: – package org.jersey.media.type; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; @Path(“/media”) public class MediaResources { @GET […]

当@Context用于setter / field / constructor注入时,HK2 Factory在Jerseyfilter之前调用

我已经能够根据如何将对象注入到jersey请求上下文中从filter注入我的jersey资源? 。 这允许我成功注入方法参数: @GET public Response getTest(@Context MyObject myObject) { // this works 但是,对于setter / field / constructor注入,HK2 Factory在jerseyfilter之前调用,这意味着provide()方法返回null: @Override public MyObject provide() { // returns null because the filter has not yet run, // and the property has not yet been set return (MyObject)context.getProperty(“myObject”); } 有没有办法定义何时运行HK2 Factory以便在filter运行后调用它? 如果没有,则解决方法是将MyObject定义为接口,并定义在其构造函数中采用ContainerRequestContext的其他实现; 任何实际使用该实例的尝试都将懒惰地委托给在ContainerRequestContext属性上设置的实现(可能在filter运行之前你不会实际使用该实例 – 此时将设置该属性)。 但我想了解是否有可能延迟HK2工厂运行的点,使其在filter之后运行(在方法参数注入的情况下,它已在filter之后运行)。 如果不可能,那么我想了解是否存在根本原因。

在Jersey 2.17中找不到@FormDataParam

我对Web服务很陌生,所以我从基本的例子开始。 这个涉及文件上传。 我正在为非maven开发人员使用最新的(2.17)版本的Jersey软件包。 它指出: bundle包含JAX-RS 2.0 API jar,所有核心Jersey模块jar以及所有必需的第三方依赖项 。 问题是我无法编译这部分: @POST @Path(“/upload”) @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadFile( @FormDataParam(“file”) InputStream uploadedInputStream, @FormDataParam(“file”) FormDataContentDisposition fileDetail) { String uploadedFileLocation = “d://uploaded/” + fileDetail.getFileName(); // save it writeToFile(uploadedInputStream, uploadedFileLocation); String output = “File uploaded to : ” + uploadedFileLocation; return Response.status(200).entity(output).build(); } 似乎@FormDataParam在Jersey 2.17包中不存在,尽管文档说它确实存在。 2.17捆绑不完整吗? 我该如何解决这个问题?

服务器发送的事件不适用于泽西SSE

我正在尝试使用Jersey的JavaScript SSE。 我在我的资源中有以下代码。 我在Java7和Tomcat 7上托管。我没有收到任何错误。 但我在页面上看不到数据。 我打电话/broadcast发布数据。 它确实显示了消息。 但客户端没有任何东西。 在Firefox中,我确实看到多次触发/broadcast事件。 这是我用的参考。 https://jersey.java.net/documentation/latest/sse.html package net.jigarshah.dse.tracker; import javax.inject.Singleton; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.glassfish.jersey.media.sse.EventOutput; import org.glassfish.jersey.media.sse.OutboundEvent; import org.glassfish.jersey.media.sse.SseBroadcaster; import org.glassfish.jersey.media.sse.SseFeature; @Singleton @Path(“broadcast”) public class SSEResource { private SseBroadcaster broadcaster = new SseBroadcaster(); @POST @Produces(MediaType.TEXT_PLAIN) @Consumes(MediaType.TEXT_PLAIN) public String broadcastMessage(String message) […]

REST JAX-RS javax.ws.rs.ProcessingException:

每当我的REST客户端代码使用下面的代码调用REST服务时,我就会遇到exception: 代码: public void putWatcher(Watcher watcher) { System.out.println(“In REST Client putWatcher.***********”); target = target.path(RESOURCE_WATCHERS).path(watcher.getWatcheruri()); System.out.println(target.getUri()); Invocation.Builder builder = target.request(); builder.put(Entity.json(watcher)); // Response response = target.request().put(Entity.json(watcher)); System.out.println(“Returned from REST Call”); } 例外: : javax.ws.rs.ProcessingException: javax.ws.rs.core.Response$Status$Family.familyOf(I)Ljavax/ws/rs/core/Response$Status$Family; at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:255) at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:667) at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:664) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) at org.glassfish.jersey.internal.Errors.process(Errors.java:297) at org.glassfish.jersey.internal.Errors.process(Errors.java:228) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:424) at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:664) at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:424) at org.glassfish.jersey.client.JerseyInvocation$Builder.put(JerseyInvocation.java:318) Caused […]

在apache tomcat 7.0上运行它时的jersey 2.7问题

我正在使用apache tomcat 7.0和eclipse创建一个jersey应用程序。 我在eclipse中创建了一个动态Web项目,并将资源文件定义为: – import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; // Plain old Java Object it does not extend as class or implements // an interface // The class registers its methods for the HTTP GET request using the @GET annotation. // Using the @Produces annotation, it defines that it can deliver […]

如何访问由@RolesAllowed保护的Jersey资源

我们正在通过邮递员rest客户端测试在泽西开发的REST Web服务。 它是一个POST方法,并使用@RolesAllowed注释。 完整注释方法如下: @POST @Path(“/configuration”) @RolesAllowed(“admin”) @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) 当我使用预期的HTTP正文内容请求这个http://baseurl/configuration时,我得到了403响应(因为它似乎只允许管理员使用它,所以它是预期的)。 我怀疑的是如何通过rest客户端使用指定的角色访问此服务。

将Jersey 2和Spring与基于Java的配置集成

我正在使用Jersey 2.10和jersey-spring3以及Spring 4.我想在泽西资源以及其他地方实现DI(基本上是服务)并且想要通过Java配置创建Spring Beans。 目前,我无法找到任何方法来做到这一点。 知道怎么做吗? 我的web.xml看起来像这样 Restful Web Application jersey-serlvet org.glassfish.jersey.servlet.ServletContainer jersey.config.server.provider.packages com.xyz 1 contextConfigLocation /WEB-INF/application-context.xml org.springframework.web.context.ContextLoaderListener jersey-serlvet /*

使用Jackson ObjectMapper和Jersey

我正在使用Jersey 2.4创建一个简单的REST接口来提供JSON对象。 我的问题是我正在尝试使用fastxml Jackson注释来控制输出,这对我来说不起作用。 我已将注释放入我的bean类中,但它们被忽略了。 当我显式创建一个ObjectMapper并使用它来对Java bean进行字符串化时,我得到了我想要的输出,它尊重Jackson注释。 但是,我更希望我不必执行此步骤,以便我的资源类可以简单地返回bean,并且Jersey框架负责对其进行字符串化。 我尝试使用Custom ObjectMapper与Jersey 2.2和Jackson 2.1的答案来解决这个问题,但是,这似乎对我没有用。 我看到ContextResolver已创建,但从未调用过。 我也花了很多时间试图解决这个看似简单的问题。 我把它剥离到一个非常简单的测试用例,如下所示。 在解决这个问题上,我将不胜感激。 资源Java类: @Path(“resource”) public class MainResource { public static class Foobar { @JsonIgnore private String foo = “foo”; private String baa = “baa”; private Map<String, List> map = new HashMap(); public Foobar() { map.put(“even”, Arrays.asList(new Integer[] { 2, 4, 6, […]

在jersey项目中包含jersey-bom导入范围依赖的目的是什么?

使用the jersey-quickstart-grizzly2工件生成基于jersey的项目时 mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 \ -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \ -DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example \ -DarchetypeVersion=2.7 pom生成了一个可以删除的jersey-bom依赖项: org.glassfish.jersey jersey-bom ${jersey.version} pom import 这种依赖: org.glassfish.jersey.containers jersey-container-grizzly2-http 这就是maven依赖图的样子: 在项目中包含jersey-bom依赖项的目的是什么?