Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 规范是否支持两次执行JAX-RS 2.0调用,如果不支持,这是规范缺陷吗?_Java_Jax Rs - Fatal编程技术网

Java 规范是否支持两次执行JAX-RS 2.0调用,如果不支持,这是规范缺陷吗?

Java 规范是否支持两次执行JAX-RS 2.0调用,如果不支持,这是规范缺陷吗?,java,jax-rs,Java,Jax Rs,我相信JAX-RS2.0规范中没有规定实现javax.ws.RS.client.Invocation的实例必须可执行多次,我希望确认或纠正这一观点。我希望能够通过JAX-RS2.0客户端API执行HTTP调用,并且能够在第一次调用以特定方式失败时第二次调用完全相同的调用 我注意到Bill Burke()的RESTful Java with JAX-RS 2.0的第121页确实指出“同一调用对象可以用于多个请求。只需预构建调用实例并根据需要重用它们。”但这让我相信重用调用实例可以与RESTEasy

我相信JAX-RS2.0规范中没有规定实现javax.ws.RS.client.Invocation的实例必须可执行多次,我希望确认或纠正这一观点。我希望能够通过JAX-RS2.0客户端API执行HTTP调用,并且能够在第一次调用以特定方式失败时第二次调用完全相同的调用

我注意到Bill Burke()的RESTful Java with JAX-RS 2.0的第121页确实指出“同一调用对象可以用于多个请求。只需预构建调用实例并根据需要重用它们。”但这让我相信重用调用实例可以与RESTEasy一起工作,我需要确信调用对象可以在任何符合JAX-RS2.0的实现中重用

但是,在Jersey v2.22.1的源代码中,我认为调用无法可靠地重用,因为ClientRequestContext是可变的,并且不会在每次执行调用实例时复制;我认为这意味着它可能在一个请求中被一个过滤器变异,然后后续执行将无法提供准确的ClientRequestContext。不过,我可能误解了这一点

假设我不能多次执行一个调用(通过invoke()或submit()调用),而这种方式可以保证在多个JAX RS实现中工作(例如,它必须在Jersey、RESTEasy等环境中工作),那么我认为我能做的最接近的就是invoke.Builder的实例。不幸的是,尽管如此,Invocation.Builder并没有让我完全理解它,因为它不支持将方法和可选的实体体与之关联。如果我想多次调用一个请求,我至少需要Invocation.Builder实例加上方法和可选实体

我正在寻找一种使用JAX-RS 2.0定义可重复请求的方法,这种方法受到规范的支持,因此可以跨实现兼容——相当于调用(与Invocation.Builder不同,Invocation.Builder具有与之相关联的方法和实体体),但可以重复

我有一些关于如何绕过限制的想法(假设我是正确的,这是一个),但我宁愿不这样做。这实际上是JAX RS 2.0规范的一个限制吗