I think if you make the factory in this case "scope=prototype", it will work 
for you.

Dan


On Thu August 27 2009 12:29:40 pm Nicola D'Elia wrote:
> 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

-- 
Daniel Kulp
[email protected]
http://www.dankulp.com/blog

Reply via email to