actually i have found the configuration to instanciate different ws client,
by thefining a factory:
<bean id="wsClientFactory"
class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass"
value="com.sinapsi.ws.ext.polimi.interfaces.PolimiWebService"/>
<property name="address" value="http://localhost:
${ws.port}/${ws.path}/polimi"/>
<property name="dataBinding" ref="aegis" />
</bean>
I am doing the following concurrent test:
@Test(invocationCount = 4, threadPoolSize = 2)
public void testConcurrentLogin() {
BindingProvider client = (BindingProvider) factory.create();
client.getRequestContext().put(SESSION_MAINTAIN_PROPERTY, true);
System.out.println(client);
PolimiWebService ws = (PolimiWebService) client;
...
ws.logout();
}
The problem is that even though the client instances are different :
org.apache.cxf.jaxws.jaxwsclientpr...@19cd5f5
org.apache.cxf.jaxws.jaxwsclientpr...@70c38c
org.apache.cxf.jaxws.jaxwsclientpr...@195ff24
org.apache.cxf.jaxws.jaxwsclientpr...@161509b
They all share the same JSESSIONID !
Since the call to logout invalidates the session, the test got broken.
How is it possible for each client to keep a JSESSIONID instances from the
others' for its own session ?
Nicola
On Thu, Aug 27, 2009 at 5:42 PM, Nicola D'Elia <[email protected]>wrote:
> Hi
> i would like to do a concurrent test of a stateful web service that uses
> the jax-ws session support.
>
> Basically this means that every jax-ws client must use a different
> JSESSIONID.
>
> I did the following to enable the session support on the client side:
>
> BindingProvider client = (BindingProvider) ws;
> client.getRequestContext().put(SESSION_MAINTAIN_PROPERTY, true);
>
> But every thread that uses the same ws client definition share the same
> JSESSIONID.
>
> I think i have to resort to having several different jax-ws client:
>
> <jaxws:client id="wsClient"
> serviceClass="com.sinapsi.ws.ext.polimi.interfaces.PolimiWebService"
> address="http://localhost:${ws.port}/${ws.path}/polimi" >
> <jaxws:dataBinding>
> <ref bean="aegis" />
> </jaxws:dataBinding>
> </jaxws:client>
>
> <jaxws:client id="wsClient2"
> serviceClass="com.sinapsi.ws.ext.polimi.interfaces.PolimiWebService"
> address="http://localhost:${ws.port}/${ws.path}/polimi" >
> <jaxws:dataBinding>
> <ref bean="aegis" />
> </jaxws:dataBinding>
> </jaxws:client>
>
> ....
>
> Is there another way to cope with that ?
>
> Isn't there a prototype scope for jax-ws client ?
>
>
>
> Thanks
>
>
> Nicola
>
>