wsimport使用cookie生成客户端

时间:2012-11-13 14:01:36

标签: java jax-ws maven-plugin wsimport

我正在使用来自wsimport maven中的jaxws-maven-plugin生成SOAP 1.2服务的客户端,执行以下操作:

<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.2</version>
<executions>
    <execution>
        <goals>
            <goal>wsimport</goal>
        </goals>
        <configuration>
            <sourceDestDir>${project.basedir}/src/main/java</sourceDestDir>
            <wsdlUrls>
                <wsdlUrl>${webservice.url}</wsdlUrl>
            </wsdlUrls>
            <extension>true</extension>
        </configuration>
    </execution>

客户端第一次调用代理时,负载均衡器会生成一个cookie并将其发回。客户端应该将其发送回来,以便负载均衡器知道哪个(哪个服务器)专用于特定客户端(这个想法是客户端第一次获得服务器而cookie识别服务器,然后负载均衡器将客户端发送到每次通话都使用相同的服务器)

现在,有没有办法告诉插件自动启用cookie处理?

1 个答案:

答案 0 :(得分:3)

是的,您必须设置属性SESSION_MAINTAIN_PROPERTY

名为HelloService的服务示例:

Hello port = new HelloService().getHelloPort();
((BindingProvider)port).getRequestContext().put(
    BindingProvider.SESSION_MAINTAIN_PROPERTY,true);

设置SESSION_MAINTAIN_PROPERTY告诉JAX-WS接受来自服务器的cookie并在所有后续调用中发回它们 - 就像浏览器一样。这可以用来维持会话。

来源:Rama Pulavarthi - Maintaining Session With JAX-WS