Thanks Daniel, that's exactly what i did.

This ensures that you have a separate http conduit for each thread.


Nicola




On Fri, Aug 28, 2009 at 9:52 PM, Daniel Kulp <[email protected]> wrote:

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