Hi everyone

We are upgrading our commons-httpclient-3.0-rc4.jar to HttpClient4.2 in our 
Apps which are deployed on Websphere V7.

We have a problem getting the right SSL-Configuration from the Websphere and I 
found out,
that this is because of new way the SSLSocketFactory is being created in the 
HttpClient4.X

In the old commons-httpclient-3.x we get the socketfactory in 
ReflectionSocketFactory.createSocket() (Oleg you did it :-))
like this: javax.net.ssl.SSLSocketFactory.getDefault()

This way we get in Websphere the right SSLSocketFactory: 
com.ibm.websphere.ssl.protocol.SSLSocketFactory
(which is the default in java.security and uses WAS truststore and not java 
cacerts).


With the new HttpClient4.2 this has changed, we get socketfactory from 
org.apache.http.conn.ssl.SSLSocketFactory.getSocketFactory()
which return in Websphere another SSLSocketFactory 
(com.ibm.jsse2.SSLSocketFactoryImpl)


I can workaround this in HttpClient4.X if I use the old way of getting the 
socketFactory:

            javax.net.ssl.SSLSocketFactory 
wasSslFactory=(javax.net.ssl.SSLSocketFactory) 
javax.net.ssl.SSLSocketFactory.getDefault();
            org.apache.http.conn.ssl.SSLSocketFactory socketFactory =
                                   new 
org.apache.http.conn.ssl.SSLSocketFactory(wasSslFactory, 
org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            org.apache.http.conn.scheme.Scheme sch = new 
org.apache.http.conn.scheme.Scheme("https", 443, socketFactory);
            SchemeRegistry schemeRegistry = new SchemeRegistry();
            schemeRegistry.register(sch);

but I don't understand why the way getting socketFactory in HttpClient4.X has 
changed, are there any reasons?

Oleg, can you explain this please?

Thank you
Adrian

Reply via email to