Tag: resteasy

REST响应后如何删除文件

在将文件作为对REST请求的响应返回后,处理删除文件的最佳方法是什么? 我有一个端点,根据请求创建一个文件并在响应中返回它。 一旦调度响应,就不再需要该文件,可以/应该删除该文件。 @Path(“file”) @GET @Produces({MediaType.APPLICATION_OCTET_STREAM}) @Override public Response getFile() { // Create the file … // Get the file as a steam for the entity File file = new File(“the_new_file”); ResponseBuilder response = Response.ok((Object) file); response.header(“Content-Disposition”, “attachment; filename=\”the_new_file\””); return response.build(); // Obviously I can’t do this but at this point I need to delete […]

RESTEasy – 需要完整路径的@Path?

我正在搞乱JAX-RS并创建了一个调用生成JSON的REST服务的应用程序。 我试过Jersey,一切都很顺利,但我不得不切换到RESTEasy,因为我的应用程序需要用JDK5构建。 我将web.xml更改为以下内容: resteasy.scan true org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap RESTEasy org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher RESTEasy /rest/* 所以我希望每个以/ rest开头的URL都由RESTEasy处理。 我的服务如下: @Path(“/services”) public class MyRESTServices { @GET @Path(“service1”) @Produces(MediaType.APPLICATION_JSON) public Object service1(Blah blah) { } } 使用Jersey工作正常, http:// localhost / MyContext / rest / services / service1绑定到我的service1()方法。 但是当我改为RESTEasy时,我有一个404: HTTP状态404 – 无法找到相对的资源:/ rest / services / service1 of full path: http:// localhost / MyContext […]

将ThreadLocal传播到从ExecutorService获取的新线程

我使用ExecutorService和Future( 这里是示例代码)在一个具有超时的单独线程中运行进程(线程“生成”发生在AOP方面)。 现在,主线程是Resteasy请求。 Resteasy使用一个或多个ThreadLocal变量来存储我需要在Rest方法调用中的某个时刻检索的一些上下文信息。 问题是,由于Resteasy线程在新线程中运行,因此ThreadLocal变量将丢失。 将Resteasy使用的任何ThreadLocal变量“传播”到新线程的最佳方法是什么? 似乎Resteasy使用多个ThreadLocal变量来跟踪上下文信息,我想“盲目地”将所有信息传递给新线程。 我已经查看了子类化ThreadPoolExecutor并使用beforeExecute方法将当前线程传递给池,但我找不到将ThreadLocal变量传递给池的方法。 有什么建议吗? 谢谢

RESTEasy客户端框架身份validation凭据

RESTEasy(一个JAX-RS实现)有一个很好的客户端框架,例如: ServiceApi client = ProxyFactory.create(ServiceApi.class, baseUri); 如何为此客户端提供HTTP身份validation凭据?

RestEasy客户端所需的jar子

我需要提供一个java REST客户端,它应该包含一个包中所有必需的jar。 我选择RestEasy作为REST框架,因为服务器应用程序是在JBoss上完成的。 到目前为止,我发现的几乎所有示例都使用应用程序容器环境,其中提供了这些lib,因此在编译期间只需要Java EE API或使用Maven构建,因此依赖项会自动解决,这可能是一个好主意,当前的标准方法,但由于项目相关的原因,我需要在lib文件夹中的jar,并能够在构建期间包含一个可执行jar。 所以我的问题是,哪个jar子有必要建立一个可以做类似的简单客户端: ResteasyClient client = new ResteasyClientBuilder().build(); ResteasyWebTarget target = client.target(myURL).queryParam(“param”, “value”); Builder builder = target.request(MediaType.APPLICATION_JSON).header(“user”, “abc”); Invocation invocation = builder.buildGet(); MyResponseObject response = invocation.invoke(MyResponseObject .class);

我可以使用RESTeasy获取application.wadl文件吗?

我需要为RESTful服务获取WADL文件。 我知道如果使用泽西,它可以作为http://localhost:8080/application.wadl 。 但我使用RESTeasy。 我可以在我的框架案例中做同样的事情吗?

javax.ws.rs.NotFoundException:使用RESTEasy和Wildfly 8.1.0.Final找不到完整路径的资源

我面临以下问题。 我已经花了3天多的时间,但找不到解决方案。 请指导我在这里做错了什么。 我是野生蝇新来的Resteasy。 这是堆栈跟踪 19:05:57,610 WARN [org.jboss.resteasy.core.ExceptionHandler] (default task-14) failed to execute: javax.ws.rs.NotFoundException: Could not find resource for full path: http://localhost:8080/admin-ws/services/user/getUser at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:73) [resteasy-jaxrs-3.0.8.Final.jar:] at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) [resteasy-jaxrs-3.0.8.Final.jar:] at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:444) [resteasy-jaxrs-3.0.8.Final.jar:] at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234) [resteasy-jaxrs-3.0.8.Final.jar:] at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:171) [resteasy-jaxrs-3.0.8.Final.jar:] at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) [resteasy-jaxrs-3.0.8.Final.jar:] at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.0.8.Final.jar:] at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.0.8.Final.jar:] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final] at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final] […]

RESTEasy:找不到内容类型application / json类型的writer

我有一个使用(application / json)并生成(application / json)的restful服务(post)。 此服务的单个参数是带注释的java对象。 我正在使用org.jboss.resteasy.client.ClientRequest将请求发送到服务。 但是,我在客户端和exception中得到此exception: 找不到内容类型application / json类型的writer。 这是否意味着我缺少一些图书馆jar子,或者我必须为application / json编写自己的编写器? 我正在使用resteasy 2.3.3.Final 以下是我添加到我的pom中的各种依赖项,我认为可能与之相关: org.jboss.resteasy resteasy-jaxrs 2.3.3.Final com.fasterxml.jackson.jaxrs jackson-jaxrs-json-provider 2.0.5 org.jboss.resteasy resteasy-jaxb-provider 2.3.4.Final org.jboss.resteasy resteasy-jackson-provider 2.3.4.Final org.codehaus.jackson jackson-core-asl 1.3.0 org.codehaus.jackson jackson-mapper-asl 1.3.0 马特

使用JAX-RS在一个位置记录请求和响应

我有一个RESTEasy Web服务器,有很多方法。 我希望实现logback来跟踪所有请求和响应,但我不希望将log.info()添加到每个方法。 也许有办法在一个地方捕获请求和响应并记录它。 也许类似于RESTEasy上的HTTP请求流程链上的filter。 @Path(“/rest”) @Produces(“application/json”) public class CounterRestService { //Don’t want use log in controler every method to track requests and responces static final Logger log = LoggerFactory.getLogger(CounterRestService.class); @POST @Path(“/create”) public CounterResponce create(@QueryParam(“name”) String name) { log.info(“create “+name) try { CounterService.getInstance().put(name); log.info(“responce data”); // <- :(( return new CounterResponce(); } catch (Exception e){ […]

RESTEasy Client + NoSuchMethodError

我正在尝试编写简单的RESTEasy客户端。 下面给出的是示例代码: Client client = ClientBuilder.newBuilder().build(); WebTarget target = client.target(“http://localhost:8080/context/path”); Response response = target.request().post(Entity.entity(object, “application/json”)); //Read output in string format String value = response.readEntity(String.class); 我在线上得到例外: Client client = ClientBuilder.newBuilder().build(); 我在控制台中看到以下错误: 16:07:57,678 ERROR [stderr] (http-localhost/127.0.0.1:8080-1) java.lang.NoSuchMethodError: org.jboss.resteasy.spi.ResteasyProviderFactory.(Lorg/jboss/resteasy/spi/ResteasyProviderFactory;)V 16:07:57,679 ERROR [stderr] (http-localhost/127.0.0.1:8080-1) at org.jboss.resteasy.client.jaxrs.internal.ClientConfiguration.(ClientConfiguration.java:44) 16:07:57,680 ERROR [stderr] (http-localhost/127.0.0.1:8080-1) at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:317) 16:07:57,680 ERROR [stderr] (http-localhost/127.0.0.1:8080-1) at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:49) 我在pom.xml中添加了resteasy客户端依赖性: […]