Tag: jersey

如何从Jersey的ContainerRequest中提取请求属性?

HttpServletRequest有一个方法setAttribute(String, Object) 。 如何从ContainterRequest提取此属性? 我没找到: getAttribute方法! 码 public class AuthenticationFilter implements Filter { public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpReq = (HttpServletRequest) servletRequest; // …. …. httpReq.setAttribute(“businessId”, businessId); } } 在泽西filter: private class Filter implements ResourceFilter, ContainerRequestFilter { public ContainerRequest filter(ContainerRequest request) { // ..extract the attribute from […]

Jersey:找不到类型的合适构造函数:无法从JSON对象实例化

我有一个资源,其方法如下: @PUT @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @Path(“/add”) public Response putThing(Thing thing) { try { //Do something with Thing object return Response.status(HttpStatus.SC_OK).build(); } catch (Exception e) { log.error(“Request failed”, e); return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).build(); } } 事情: public class Thing { private final String symbol; private final String name; public Stock(String symbol, String name) { this.symbol = symbol; this.name = […]

自动级联bean-validation递归validation,@ Valid注释

我在Jersey中的REST资源端点validation我的POJO: public class Resource { @POST public Response post(@NotNull @Valid final POJO pojo) { … } } public class POJO { @NotNull protected final String name; @NotNull @Valid protected final POJOInner inner; … } public class POJOInner { @Min(0) protected final int limit; … } 这似乎工作正常。 但是,仅当字段inner具有@Valid注释时,才会validation@Min(0)注释。 将@Valid注释添加到不是基元的每个字段是不对的。 有没有办法告诉beanvalidation器自动递归继续validation,即使没有@Valid注释? 我希望我的POJO如下: public class POJO { @NotNull […]

Jersey ClientBuilder.newClient():找不到源

我有一个Java 64位Eclipse应用程序,其中Eclipse在Windows 7 Pro x64上运行。 我下载了Jersey软件包jaxrs-ri-2.7.zip,用于客户端RESTful API访问。 我添加了这些外部jar(项目|构建路径|配置构建路径… |库): jaxrs-ri/api/javax.ws.rs-api-2.0.jar jaxrs-ri/lib/jersey-client.jar jaxrs-ri/lib/jersey-common.jar 这是来源: package prjTestJersey; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; public static void main(String[] args) { try { Client oClient = ClientBuilder.newClient(); oClient.close(); } catch (Exception e) { e.printStackTrace(); } } 踩到第一行时,我收到以下错误:Clinet oClient ……: Source not found. 为什么错误以及如何解决? 为什么“找不到源”而不是真正的错误。 注意:我尝试将3个jar文件复制到项目的lib文件夹中,但这没有任何好处。 我正在使用Eclipse调试器,因此在调试视图中按F11,然后在线上执行F6。 更新: 我尝试创建一个全新的32位应用程序(WindowBuilder SWT应用程序窗口),并简单地更新main(…),同样的问题。 这意味着问题与平台无关。 更新2: […]

Jersey REST Webservice在Struts 2中不起作用

我已经使用Jersey REST webservice创建了一个Struts2应用程序,Struts2应用程序工作正常,但其余的webservice无法正常工作,执行URL时 http://localhost:8080/SAMPLE/resources/users/name/manu 我正进入(状态 没有针对namespace / resources / users / name和action name manu映射的Action。 – [未知位置] Struts的版本是否会导致任何问题,因为我使用的是Struts 2.1.6? 任何人都可以告诉我一些解决方案 web.xml : struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* ServletAdaptor com.sun.jersey.spi.container.servlet.ServletContainer com.sun.jersey.config.property.packages otims.usermodules.services 1 ServletAdaptor /resources/* 30 login.jsp struts.xml : : : : UserModulesServices.java : package otims.usermodules.services; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path(“/users”) public […]

从客户端将文件作为参数发送到REST服务?

我的要求是通过一个客户端将文件发送到REST服务。 该服务将处理该文件。 我正在使用Jersey API来实现这一点。 但我在很多文章中搜索过,没有任何关于如何从客户端传递文件以及REST服务将如何检索文件的信息 ……如何实现这一目标? 我没有使用Servlets来创建REST服务。

JAX-RS资源生命周期性能影响

我知道默认情况下,JAX-RS端点生命周期是每个请求一次 ,因此可以将请求特定信息注入到实例中。 我们还可以创建一个端点Singleton,意味着每个应用程序一次 ,其中请求特定信息不能注入到实例中,而是可以将其注入到请求的方法中。 1.所以我想知道哪种方法在性能方面更好 ,无论是每次请求还是每次应用一次 。 2.我还想了解这些方法的优缺点,以及注入请求的具体信息 3.您希望在API应用程序中使用哪种方法 注意:到目前为止,我一直在使用按请求一次的方法,但我总是怀疑这是否有效,绝对是使编码更容易和可重用。

Jersey客户端API vs Jersey测试框架

我是Web服务的新手,想知道Jersey客户端API和泽西测试框架有什么区别? 我想测试我的jerseyREST网络服务端点。 哪个是正确的?

同一WAR中的多个JAX-RS应用程序

我有 @ApplicationPath(“/resourcesP”) public class RestfulPrediction extends Application { @Override public Set<Class> getClasses() { Set<Class> set = new HashSet<Class>(); set.add(PredictionsRS.class); return set; } } 和 @ApplicationPath(“/resourcesA”) public class RestfulAdage extends Application { @Override public Set<Class> getClasses() { Set<Class> set = new HashSet<Class>(); set.add(Adages.class); return set; } } 两个不同的ApplicationPath和类如下。 @Path(“/”) public class service.Adages {} @Path(“/”) public class […]

如何使用Jersey将嵌套列表编组为JSON? 我得到一个空数组或一个包含数组的单元素字典数组

我正在开发一个使用Jersey将对象转换为JSON的项目。 我希望能够写出嵌套列表,如下所示: {“data”:[[“one”, “two”, “three”], [“a”, “b”, “c”]]} 我想要转换的对象首先将数据表示为<LinkedList <LinkedList >>,我认为Jersey会做正确的事情。 以上输出为空值列表: {“data”:[null, null]} 在阅读了需要包装的嵌套对象之后,我尝试了以下方法: @XmlRootElement(name = “foo”) @XmlType(propOrder = {“data”}) public class Foo { private Collection data = new LinkedList(); @XmlElement(name = “data”) public Collection getData() { return data; } public void addData(Collection data) { FooData d = new FooData(); for(Object o: data) { […]