Thanks a lot Dan for the quick fix.

I will try it as soon as it will be available in the daily maven
snapshot repo.

Best,
Jerome



Le 14/03/2013 19:48, Daniel Kulp a écrit :
> I just created an issue for this:  
> https://issues.apache.org/jira/browse/CXF-4895
>
> The AsyncClient based HTTPConduit uses the hashCode of the tlsClientParams to 
> determine when to reuse various connection things.  However, the 
> HttpURLConnection base conduit doesn't.   The socketFactory is cached on 
> first hit and always used after that.
>
> Testing a fix now.
>
> Dan
>
>
>
> On Mar 14, 2013, at 7:58 AM, Jerome Revillard <[email protected]> wrote:
>
>> Hi,
>>
>> We have some functions of  a services which require user certificate
>> authentication and some no. What I would like is to update the
>> TLSClientParameters according to the function that I call without having to
>> create another Client.
>>
>> Here is a sample of what I want:
>>
>> -------------------------------------------------------------------
>> JaxWsProxyFactoryBean proxyFactory = new JaxWsProxyFactoryBean();
>> proxyFactory.setServiceClass(CommandServicePortType.class);
>> proxyFactory.setAddress("https://localhost:8443/pandora-gateway-sal-command/command";);
>> //proxyFactory.getFeatures().add(new LoggingFeature());
>> CommandServicePortType commandServicePortType = (CommandServicePortType)
>> proxyFactory.create();
>>              
>> System.out.print("Setup the trustmanager: ");
>> org.apache.cxf.endpoint.Client client = ClientProxy.getClient(connection);
>> HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
>> TLSClientParameters tlsClientParameters =
>> httpConduit.getTlsClientParameters();
>> if(tlsClientParameters == null){
>>         tlsClientParameters = new TLSClientParameters();
>> }
>> tlsClientParameters.setTrustManagers(XXXX);
>> httpConduit.setTlsClientParameters(tlsClientParameters);
>> System.out.println("OK");
>>
>>              
>> System.out.print("Echo String in a non secured way: ");
>> String output = commandServicePortType.echoStringNotSecured("It works!");
>> System.out.println(output);
>>              
>> System.out.print("Setup the KeyManager: ");
>> tlsClientParameters = httpConduit.getTlsClientParameters();
>> if(tlsClientParameters == null){
>>         tlsClientParameters = new TLSClientParameters();
>> }
>> tlsClientParameters.setKeyManagers(YYYY);
>> httpConduit.setTlsClientParameters(tlsClientParameters);
>> System.out.println("OK");
>>
>> System.out.println("echo ok");
>> output = commandServicePortType.executeAndReturnString("echo ok");
>> System.out.println(output);
>> ----------------------------------------------------------------------
>>
>> I'm stuck at the "executeAndReturnString" call as it require the user
>> authentication and it seems not using it. If I recreate the client from
>> scratch for the second call with all the needed parameters then it work.
>>
>> What should I do so that the new TLSParamaters are taken into account ?
>>
>>
>>
>>
>> --
>> View this message in context: 
>> http://cxf.547215.n5.nabble.com/Howto-update-TLSClientParameters-after-the-the-first-WScall-tp5724549.html
>> Sent from the cxf-user mailing list archive at Nabble.com.

Attachment: smime.p7s
Description: Signature cryptographique S/MIME

Reply via email to