Java WebTarget与线程安全

Java WebTarget与线程安全,java,rest,jersey,Java,Rest,Jersey,我的理解是Jersey的WebTargets是线程安全的,可以并发调用,但我有一个并发bug。下面的代码在一个线程中运行良好,但只要我同时调用它,就会得到一个NPE public static final MultivaluedMap<String, Object> ACCEPT_GZIP = new MultivaluedHashMap<>(hashMap("Accept-Encoding", "gzip")); webTarget.p

我的理解是Jersey的WebTargets是线程安全的,可以并发调用,但我有一个并发bug。下面的代码在一个线程中运行良好,但只要我同时调用它,就会得到一个NPE

public static final MultivaluedMap<String, Object> ACCEPT_GZIP =
                new MultivaluedHashMap<>(hashMap("Accept-Encoding", "gzip"));

webTarget.path("my_web_service/path")
                .request(MediaType.APPLICATION_JSON_TYPE)
                .headers(ACCEPT_GZIP)
                .post(entity(symbols.keySet(), APPLICATION_JSON_TYPE),
                      new GenericType<List<MyPojo>>(){});

问题在于多值dmap不是线程安全的,Jersey的记录器似乎以线程不安全的方式处理标头,因此共享
公共静态最终多值dmap ACCEPT_GZIP
不是一个好主意。应为每个请求重新创建标头:

webTarget.path("my_web_service/path")
                .request(MediaType.APPLICATION_JSON_TYPE)
                .header("Accept-Encoding", "gzip")
                .post(entity(symbols.keySet(), APPLICATION_JSON_TYPE),
                      new GenericType<List<MyPojo>>(){});
webTarget.path(“我的web\u服务/path”)
.request(MediaType.APPLICATION\u JSON\u类型)
.header(“接受编码”、“gzip”)
.post(实体(symbols.keySet(),应用程序类型),
新的GenericType(){});

您发现了这一点,并与我们分享答案?如果是这样,你能接受自己的答案吗?感谢您发布原因和解决方案。
webTarget.path("my_web_service/path")
                .request(MediaType.APPLICATION_JSON_TYPE)
                .header("Accept-Encoding", "gzip")
                .post(entity(symbols.keySet(), APPLICATION_JSON_TYPE),
                      new GenericType<List<MyPojo>>(){});