Tag: jax rs

如何在JAX-RS Web服务上启用跨域请求?

我开发了一套宁静的networking服务。 由于错误, No 'Access-Control-Allow-Origin' header is present on the requested resource.从远程客户端调用这些方法中的任何一个No 'Access-Control-Allow-Origin' header is present on the requested resource. 这些服务在localhost上完美运行。 是否有任何更改或configuration在服务器端来解决问题。 即启用跨域请求。 我正在使用WildFly 8,JavaEE 7

URLmatrix参数与请求参数

我想知道是否在我的url中使用matrix或查询参数。 我发现一个较老的讨论 ,该主题不令人满意。 例子 带有查询参数的URL: http://some.where/thing?paramA = 1&paramB = 6542 带有matrix参数的URL: http://some.where/thing; paramA = 1; paramB = 6542 乍一看matrix似乎只有优势: 更具可读性 在XML文档中不需要编码和解码“&” 带“?”的url 在许多情况下不被caching; 带有matrix参数的URL被caching matrix参数可以出现在path的任何地方,并不限于其结束 matrix参数可以有多个值: paramA=val1,val2 但是也有缺点: 只有像JAX-RS这样的几个框架支持matrix参数 当浏览器通过GET提交表单时,参数变成查询参数。 因此,对于同一个任务,最终会有两种参数。 为了不会混淆REST服务的用户并限制服务开发者的工作,在这个区域中总是使用查询参数会更容易。 由于该服务的开发人员可以select一个matrix参数支持的框架,唯一的缺点是浏览器默认创build查询参数。 还有其他的缺点吗? 你会怎么做?

泽西岛415不支持的媒体types

我一直在努力,以纠正HTTP错误415 Unsupported Media Type但它仍然显示媒体不支持的页面。 我在Postman中添加header application/json 。 这是我的Java代码 package lostLove; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.json.JSONObject; @Path("/Story") public class Story { @POST @Consumes({"application/json"}) @Produces(MediaType.APPLICATION_JSON) // @Consumes(MediaType.APPLICATION_JSON) // @Path("/Story") public JSONObject sayJsonTextHello(JSONObject inputJsonObj) throws Exception { String input = (String) inputJsonObj.get("input"); String output = […]

使用JERSEYinput和输出二进制stream?

我正在使用Jersey来实现一个主要检索和提供JSON编码数据的RESTful API。 但是我有一些情况需要完成以下工作: 导出可下载文档,如PDF,XLS,ZIP或其他二进制文件。 检索多部分数据,如一些JSON加上一个上传的XLS文件 我有一个单页面的基于JQuery的Web客户端,创build对这个Web服务的AJAX调用。 目前,它不提交表单,并使用GET和POST(带有JSON对象)。 我应该利用表单发送数据和附加的二进制文件,或者我可以使用JSON加二进制文件创build多部分请求吗? 当我的应用程序的服务层生成一个PDF文件时,当前会创build一个ByteArrayOutputStream。 通过Jersey将这个stream输出到客户端的最好方法是什么? 我创build了一个MessageBodyWriter,但我不知道如何从Jersey资源中使用它。 这是正确的做法吗? 我一直在浏览泽西岛的样本,但还没有发现任何说明如何做这些事情的东西。 如果有问题的话,我和Jackson一起使用Jersey来做Object-> JSON而不用XML步骤,而不是真的使用JAX-RS。

平台服务与Activemq中间件集成服务

我有一个用JAX-RS和jersey开发的Restful服务API。 我已经在TOMCAT 7中部署了相同的部分。现在我想实现Activemq,以便将所有请求保留在队列中并处理请求资源。 如何做到这一点,并与tomcat7集成。 如何将ActiveMq与Tomcat7或我的rest服务webapp集成。 如何致电该服务。 重要说明: – 在Api里面,我使用FilterChaining的概念来保​​证安全性,在validation了主叫方之后,我只是把请求转发给资源。 为此,我已经添加到web.xml中。 谢谢 这是我的class级 – public class LimitFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //some authentication if (true) { // let the request through and process as usual chain.doFilter(request, response); } else { // handle limit case, eg […]

JAX-RS /泽西岛如何自定义error handling?

我正在使用Jersey学习JAX-RS(又名JSR-311)。 我已经成功地创build了一个根资源,并且正在玩弄参数: @Path("/hello") public class HelloWorldResource { @GET @Produces("text/html") public String get( @QueryParam("name") String name, @QueryParam("birthDate") Date birthDate) { // Return a greeting with the name and age } } 这个效果很好,可以处理Date(String)构造函数(如YYYY / mm / dd和mm / dd / YYYY)所理解的当前语言环境中的任何格式。 但是如果我提供一个无效的或者不明白的值,我会得到一个404响应。 例如: GET /hello?name=Mark&birthDate=X 404 Not Found 我如何定制这种行为? 也许是不同的响应代码(可能是“400错误的请求”)? 怎么logging一个错误? 也许在自定义标题中添加问题描述(“错误的date格式”)以帮助解决问题? 或者返回一个包含细节的错误响应,以及一个5xx状态码?

结合Spring项目和泽西岛

我已经用Spring JPA构build了一个项目,现在我想在我的Jersey项目中使用它。 我在我的pom.xml中添加了我的SJPA项目作为依赖项 当我使用GET / POST / PUT / DELETE方法时,我想从我的SJPA使用我的服务类。 有没有简单的方法来做到这一点与注释? 或者我必须在每个类中获得AnnotationConfigApplicationContext ? 感觉有点浪费。 @Path("/users") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public final class UserResource { private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); private PodcastService service; @GET public Response getAllPodcasts() { context.scan("org.villy.spring.service"); context.refresh(); service= context.getBean(PodcastService.class); return Response.ok(service.findAll()).build(); } }

在Jersey平安Web服务中与其他对象一起上传文件

我想通过上传图片和员工数据来在系统中创build员工信息。 我可以用不同的rest电话使用泽西岛。 但是我想在一个rest电话中实现。 我在结构下面提供。 请帮我在这方面怎么做。 @POST @Path("/upload2") @Consumes({MediaType.MULTIPART_FORM_DATA,MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response uploadFileWithData( @FormDataParam("file") InputStream fileInputStream, @FormDataParam("file") FormDataContentDisposition contentDispositionHeader, Employee emp) { //….. business login } 每当我试图做,我在Chrome邮递员得到错误。 下面给出了我的Employee json的简单结构。 { "Name": "John", "Age": 23, "Email": "john@gmail.com", "Adrs": { "DoorNo": "12-A", "Street": "Street-11", "City": "Bangalore", "Country": "Karnataka" } } 不过,我可以做两个不同的调用,但我想在一个rest电话,以便我可以接收文件以及员工的实际数据。 请求你在这方面的帮助。

将EJB注入JAX-RS(RESTful服务)

我试图通过注释将无状态EJB注入我的JAX-RS web服务。 不幸的是,EJB是null ,当我尝试使用它时,我得到一个NullPointerException 。 @Path("book") public class BookResource { @EJB private BookEJB bookEJB; public BookResource() { } @GET @Produces("application/xml") @Path("/{bookId}") public Book getBookById(@PathParam("bookId") Integer id) { return bookEJB.findById(id); } } 我究竟做错了什么? 以下是关于我的机器的一些信息: Glassfish 3.1 Netbeans 6.9 RC 2 Java EE 6 你们可以举个实例吗?

如何使用JAX-RS和Jersey处理CORS

我正在开发一个Java脚本客户端应用程序,在服务器端,我需要处理CORS,我用JERSEY写在JAX-RS上的所有服务。 我的代码: @CrossOriginResourceSharing(allowAllOrigins = true) @GET @Path("/readOthersCalendar") @Produces("application/json") public Response readOthersCalendar(String dataJson) throws Exception { //my code. Edited by gimbal2 to fix formatting return Response.status(status).entity(jsonResponse).header("Access-Control-Allow-Origin", "*").build(); } 截至目前,我收到错误没有“访问控制允许来源”标题出现在请求的资源。 原因' http:// localhost:8080 '因此不被允许访问。“ 请帮助我。 感谢和问候佛Puneeth