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
>
>

Reply via email to