Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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客户端删除过滤器_Java_Jax Rs - Fatal编程技术网

Java 从JAX-RS客户端删除过滤器

Java 从JAX-RS客户端删除过滤器,java,jax-rs,Java,Jax Rs,我需要为来自客户端的所有传出请求添加一个授权头,并按照回答中的说明添加一个ClientRequestFilter 现在我想更改我创建的过滤器的属性。我试图重新注册过滤器的新副本,但没有成功。我试图查看客户机对象的可用方法,但没有找到任何类似于取消注册或删除的方法 示例代码: Client client = ClientBuilder.newClient().register(new ClientObjectMapperProvider()); AuthTokenFilter authTokenF

我需要为来自客户端的所有传出请求添加一个授权头,并按照回答中的说明添加一个
ClientRequestFilter

现在我想更改我创建的过滤器的属性。我试图重新注册过滤器的新副本,但没有成功。我试图查看客户机对象的可用方法,但没有找到任何类似于取消注册或删除的方法

示例代码:

Client client = ClientBuilder.newClient().register(new ClientObjectMapperProvider());
AuthTokenFilter authTokenFilter = new AuthTokenFilter(authTokenService, authConfig);
        client.register(authTokenFilter);
//make some requests


//In another method in another class
AuthTokenFilter newFilter = new AuthTokenFilter(authTokenService, newConfig);
client.register(newFilter);

//make more requests
当我在注册新过滤器后发送请求时,我希望auth头根据新配置而不同,但这并没有发生


经过进一步调查,如果已经注册了另一个相同类型的对象,那么客户端对象似乎不会注册该对象。但是仍然没有找到取消注册的方法。

创建客户机实例非常繁重,因此您不想经常这样做,因此缓存和重用客户机实例是有意义的

如果您只是希望每个目标端点有一个单独的身份验证过滤器,那么不必在客户端实例上进行注册。在创建WebTarget(表示要与之通信的具体端点)之前,您可以在创建WebTarget后注册过滤器

配置webtarget也可能相当繁重() 但这确实意味着您可以为每个目标主机生成(和缓存)不同的身份验证过滤器

如果您希望根据某些已编辑的配置(例如属性文件/配置REST端点)动态重新配置客户端/webtarget,则
可以简单地拥有WebTarget/客户端实例的缓存,当配置更改时,您可以从头开始重新生成这些实例。(在丢弃任何旧的客户端实例之前,您需要记住调用
client.close()

创建客户端实例非常繁重,因此您不想经常这样做,因此缓存和重用客户端实例是有意义的

如果您只是希望每个目标端点有一个单独的身份验证过滤器,那么不必在客户端实例上进行注册。在创建WebTarget(表示要与之通信的具体端点)之前,您可以在创建WebTarget后注册过滤器

配置webtarget也可能相当繁重() 但这确实意味着您可以为每个目标主机生成(和缓存)不同的身份验证过滤器

如果您希望根据某些已编辑的配置(例如属性文件/配置REST端点)动态重新配置客户端/webtarget,则
可以简单地拥有WebTarget/客户端实例的缓存,当配置更改时,您可以从头开始重新生成这些实例。(在丢弃任何旧的客户端实例之前,您需要记住调用
client.close()

我试图重新注册一个新的筛选器副本,但没有成功。代码在哪里?@nullpointer我无法共享整件事,因为它分布在多个文件中,而且有很多文件,但是我已经编辑了,包含了基本的想法。你最终知道怎么做了吗?我只是需要创建一个新的客户端来运行每个测试。基本上是client.close(),client=new client()…我试图重新注册一个新的筛选器副本,但没有成功。代码在哪里?@nullpointer我无法共享整个内容,因为它分布在多个文件中,而且有很多,但是我已经编辑了,包含了基本的想法。你最终知道怎么做了吗?我只是需要创建一个新的客户端来运行每个测试。基本上,client.close(),client=new client()…这也是我的第一个想法,但是因为我用各种方法调用了很多不同的端点,所以我不想全部更改它们——这会破坏使用过滤器的全部意义——以避免复制粘贴相同的代码。这也是我的第一个想法,但是,由于我用各种方法调用了很多不同的端点,我不想全部更改它们——这将破坏使用过滤器的全部意义——以避免在所有地方复制粘贴相同的代码。