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
