java.util.Collections $ UnmodifiableRandomAccessList到Collections.singletonList

时间:2013-12-09 03:51:28

标签: java collections type-conversion

如何将java.util.Collections$UnmodifiableRandomAccessList转换为Collections.singletonList? 为了在两个服务之间存储会话,我找到了这个,但我无法弄清楚介于两者之间的步骤。 首先获取我需要设置的cookie信息:

Map<String, Collections> headerInfo = (Map<String, Collections>)
 ((BindingProvider) port).getResponseContext()
                         .get(MessageContext.HTTP_RESPONSE_HEADERS);

现在我可以获得我需要的cookie信息; 如果我做了

System.out.println(headerInfo.get("Set-Cookie"));

我得到这样的东西

Set-Cookie=[PHPSESSID=rpsnc2g7o4ltbr6l9qus177p14; path=/];

现在我只需要这样做:

((BindingProvider) port2).getRequestContext()
   .put(MessageContext.HTTP_REQUEST_HEADERS, 
      Collections.singletonMap("Cookie", Collections.singletonList(cookieValue)));

但我无法弄清楚如何得到 headerInfo.get("Set-Cookie")至:cookieValue

这是我在Q中找到问题解决方案的第一部分的问题:左JAX-WS client: maintain session/cookies across multiple services
(这也可能解释我的问题)

1 个答案:

答案 0 :(得分:4)

解决方案是通过转换到正确的类/接口来使用原始列表:

List<String>

而不是:

Collections

的工作。

Map<String, List<String>> headers = (Map<String, List<String>>)((BindingProvider) authPort).getResponseContext().get(MessageContext.HTTP_RESPONSE_HEADERS);
List<String> setCookie = (List<String>) headers.get("Set-Cookie");
((BindingProvider) servicePort).getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS,Collections.singletonMap("Cookie", setCookie ));