我正在使用来自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处理?
答案 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并在所有后续调用中发回它们 - 就像浏览器一样。这可以用来维持会话。