我正在使用通过 spring 配置的 jersey 客户端的单例实例,其中有多个线程,每个线程在客户端上设置不同的身份验证过滤器。根据文档
http://jersey.java.net/nonav/apidocs/1.3/jersey/com/sun/jersey/api/client/Client.html .
设置过滤器不保证线程安全,这意味着当其他线程同时设置过滤器时,不能保证线程 A 能够通过自身身份验证。
除了为每个线程创建一个新客户端之外,是否有解决此问题的方法?我想避免这种情况,因为这是一项昂贵的操作。
最佳答案
我不相信您能够以这种方式安全地使用具有多个线程的单个客户端。我建议创建一个客户端池,并让每个线程从池中借用一个客户端,设置适当的身份验证过滤器,然后在将客户端返回到池之前清除过滤器。
Apache commons 有一个 pool非常适合此目的的组件。
关于java - Jersey 客户端过滤器线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611323/