Tag: jax rs

如果接收到无效的JSon,则不会调用ExceptionMapper

我使用Jersey 2.5.1和Jackson 2.2。 用于构建JSON Rest Web服务。 我有点了,并且运行了2个ExceptionMappers但是对于“not-json”请求,应用程序没有抛出任何exception! ExceptionMapper如果抛出NullPointerException,将调用它 如果JSon Mapping出现问题,将调用ExceptionMapper 我的问题:1。请求正文:{}工作2.请求正文:{}与应用程序端NullPointer调用第一个exception映射器3.请求正文:“jibberish”不调用任何东西(没有被任何ExceptionMapper捕获)导致没有exception被抛出。 不幸的是,响应主体是这样的:无法识别的字段“xxx”(类com.sample.MyDto),未标记为可忽略(9个已知属性……)但我想自定义错误消息,因为我总是返回一个JSon对象。

Java Rest API在JAX-RS中调用另一个Rest而不等待响应

我有一个案例要在我的项目中实现.Below是一个必须实现的示例rest服务 @GET @Path(“/test/{id}”) @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public String getData(@PathParam(“id”) String id) { //Some processing to get value of String String result = doSomeProcessing(); //I want to return this result to GUI and call one more rest api // and end this process without waiting for response from second //call new Thread(){ //call second rest api }.start(); […]

@RolesAllowed无法用泽西解决

我正在使用JAX-RS使用平针织实现。 我正在尝试使用Tomcat 6使用BASIC身份validation来validation我的服务。 这是代码: @Path(“/authenticate”) @RolesAllowed({“Admin”,”Guest”}) public class BasicAuthenticationSecurity { @GET @Path(“/wbiPing”) @Produces(MediaType.TEXT_PLAIN) @RolesAllowed(“Admin”) public Response wbiPing(){ System.out.println(“Pinged!!!”); return Response.ok(“Pinged!!!”).build(); } } 当我尝试使用@RolesAllows注释我的方法时,我收到编译错误: @RolesAllows cannot be resolved to a type 请让我知道如何解决这个问题? 这需要任何特定的jar子/ API? 编辑: web.xml中 jersey-serlvet com.sun.jersey.spi.container.servlet.ServletContainer com.sun.jersey.config.property.packages com.security; com.exception com.sun.jersey.spi.container.ResourceFilters com.sun.jersey.api.container.filter.RolesAllowedResourceFilterFactory 1 jersey-serlvet /* BasicDemo /* GET Admin BASIC Login 请让我知道这个问题。

我们是否应始终使用异步JAX-RS资源用于移动后端?

我正在使用Java EE构建Mobile后端API – JAX-RS 2.0技术。 由于大多数移动客户端消耗都是异步http调用 所以我的问题是: 我应该为所有JAX-RS资源使用异步function吗? 原因如果不是? 以下是模板Mobile Async API @Path(“/async_api”) public class AsyncResource { @GET @Path(“/loadUsers”) @Produces(MediaType.APPLICATION_JSON) public void loadUsers(@Suspended AsyncResponse asyncResponse) { //TODO: ManagedExecutorService new Thread(new Runnable() { @Override public void run() { List users = loadBigUsers(); asyncResponse.resume(users); } private List loadBigUsers() { return null; // Return big list } }).start(); […]

Google App Engine Jersey错误格式json

我正在使用带有Jersey和JAX-RS的Google App Engine JAVA开发REST API。 我希望能够以JSON格式向用户发送自定义错误,因为我正在使用javax.ws.rs.ext.ExceptionMapper 当我在本地计算机上使用Jetty运行应用程序时,一切正常,但是当我部署到Google时,我得到了默认的HTML 404页面 这是资源代码: @GET @Produces(MediaType.APPLICATION_JSON) @Path(“{id}”) public Customer getCustomer(@PathParam(“id”) String id) { Customer customer = getCustomer(id); if(customer == null) throw new NotFoundException(“Customer not found”); return customer; } exception映射器: @Provider public class NotFoundExceptionMapper implements ExceptionMapper { @Override public Response toResponse(NotFoundException e) { ErrorMessage errorMessage = new ErrorMessage(); errorMessage.setErrrorMessage(e.getMessage()); errorMessage.setResponseCode(404); return […]

在头文件中发送params并在服务器端获取它们 – java

我正在使用泽西岛,我希望从请求标题中获取参数; 这是我的java服务器端代码: @GET @Path(“/usersForMobile”) @Produces({ MediaType.APPLICATION_JSON + “;charset=utf-8” }) public Response getUsersForMobile(@Context UriInfo info) { String rashutId ; String userName ; String password; List inspectorList= new ArrayList(); try { rashutId = info.getQueryParameters().getFirst(“rashutId”); userName = info.getQueryParameters().getFirst(“userName”); password = info.getQueryParameters().getFirst(“password”); inspectorList = LoginService.getInspectorsList(userName,password,rashutId); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if(!inspectorList.isEmpty()) return […]

Jersey,Jackson和JAX-RS POST多种JSON格式

我试图能够定义以下代码: public class MyObject { private String name; … // Other attributes } @Path(…) @Stateless public class MyRestResource { @POST @Consumes(MediaType.APPLICATION_JSON) public Response create(List myObjects) { // Do some stuff there } } 我知道我需要使用: DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true 正确设置我的对象映射器,以便能够在我的其余资源上接受单个值作为数组。 我成功地设置了那个部分。 我对这种方法的问题是以下内容不可区分: { “name”: “a name”, … // other attributes } 和 [{ “name”: “a name”, … // […]

jackson:不同的XML和JSON格式

在我的基于Apache wink的REST项目中,我们使用Jackson jax-rs提供程序来处理JSON和XML内容类型。 我们的响应对象包含HashMap 。 映射键包含空格,因此无法将其序列化为XML元素名称。 JSON序列化工作正常。 JSON格式: { “properties”: { “abc”: { “name”: “abc”, “type”: “Double”, “value”: “2.0” }, “xyz”: { “name”: “xyz”, “type”: “Double”, “value”: “0.0” } } } 期望的XML格式 我们如何使用Jackson jax-rs XML和JSON提供程序实现这一目标。 是否可以定义自定义jackson序列化程序并扩展jax-rs提供程序。 请建议最好的方法。

如何在不使用servlet但使用JAX-RS的情况下将json对象从ajax发布到java类?

我是JAX-RS新手,我正在努力学习新的东西。 我遇到了一个问题,在Java Script创建一个JSON对象,使用JAX-RS和annotations通过ajax将它发布到Java类,并从中创建一个JSON文件。 我正在为它创建一个Maven项目。 任何人都可以建议我任何教程。 我试图从过去1周开始实施,但无法做任何事情。 任何建议赞赏。 我在Java POST annotation是: @POST @Path(“/post”) @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public void post(Message obj){ System.out.println(“in post”); String v_id = obj.getID(); String v_email = obj.getEmail(); String v_checkedornot = obj.getCheckedOrNot(); System.out.println(“id ” + v_id +” email ” + v_email + ” checkedornot ” + v_checkedornot); } 我的AJAX POST是: var passingObject = { ID […]

如何处理JAX-RS中的意外exception

我的技术堆栈是Tomcat(servlet 3.0),Jersey用于JAX-RS,Spring和Hibernate。 当Hibernate中的某些数据转换错误出现意外问题时,我不希望客户端看到我的堆栈跟踪是否存在Tomcat尝试默认打印的exception。 但是,我想记录这些exception,以便找出错误并解决问题。 我的第一次尝试是使用来自JAX-RS的ExceptionMapper,并天真地认为可以解决我的问题。 但后来我发现泽西岛抛出了自己的例外,例如未映射的url是com.sun.jersey.api.NotFoundExceptions。 这会导致记录404exception,这是我不想要的。 更糟糕的是,客户端不再获得404而是获得状态代码500。 我可以为jersey抛出的exception创建exception映射器,但我可能会错过一些东西。 这样的事情有最好的做法吗?