Hi,

I think the conduit settings are not thread safe even if you use 
((BindingProvider)port).getRequestContext().put("thread.local.request.context", 
"true").
See http://cxf.apache.org/faq.html#FAQ-AreJAXWSclientproxiesthreadsafe%3F for 
details.
Could you try to create client proxy object per thread?

Regards,
Andrei.

> -----Original Message-----
> From: Samo Dadela [mailto:samo_dad...@hotmail.com]
> Sent: Freitag, 15. November 2013 13:44
> To: users@cxf.apache.org
> Subject: RE: multiple WS calls to the same URL as different user from same
> VM
> 
> Hi,
> 
> This is the latest code. NTLM now works, but I'm getting "Authorization loop
> detected on Conduit" once and "Buffer already closed for writing" every now
> and then... It seems something is not thread-safe. I'm also not sure if I'm
> using a single conduit or is it being shared.
> 
> This code is running in 7 threads as 7 different users:
> 1. proxy is created and configured
> 2. call made
> 3. repeats 1
> 
>         Lists ss = null;
>         ListsSoap port = null;
> 
> 
>         ss = new Lists(wsdlURL, serviceName);
>         port = ss.getListsSoap();
> 
> 
> ((BindingProvider)port).getRequestContext().put("thread.local.request.cont
> ext", "true");
> 
>         // See:
>         // http://monkeyingwithjava.wordpress.com/2012/09/27/connecting-to-
> microsoft-dynamics-crm-4-0-webservices-with-java-lessons-learned/
>         Bus bus = BusFactory.getDefaultBus();
>         bus.setProperty("use.async.http.conduit", "true" );
>         bus.setProperty("thread.local.request.context", "true");
> 
>         Client client = ClientProxy.getClient( port );
>         HTTPConduit http = (HTTPConduit)client.getConduit();
>         if ( http instanceof AsyncHTTPConduit ) {
>             AsyncHTTPConduit conduit = (AsyncHTTPConduit)http;
>             DefaultHttpAsyncClient defaultHttpAsyncClient;
>             try {
>                 defaultHttpAsyncClient = conduit.getHttpAsyncClient();
>             }
>             catch ( IOException exception ) {
>                 throw new RuntimeException( exception );
>             }
> 
>             defaultHttpAsyncClient.getCredentialsProvider().setCredentials(
> AuthScope.ANY,
>                     new NTCredentials( username, password, "", domain ) );
> 
>             conduit.getClient().setAllowChunking( false );
>             conduit.getClient().setAutoRedirect( true );
> 
> 
>         }
> 
> 

Reply via email to