HTTPClient-java.net.SocketException: несвязанные сокеты не реализованы

Я использую HTTPClient 4.0 для подключения к удаленному серверу и передачи файла по HTTPS. Когда я пытался подключиться, я получаю исключение «java.net.SocketException: неподключенные сокеты не реализованы». Пожалуйста, посмотрите на трассировку стека

java.net.SocketException: Unconnected sockets not implemented 
at java.lang.Throwable.<init>(Throwable.java:196) 
at java.lang.Exception.<init>(Exception.java:41) 
at java.io.IOException.<init>(IOException.java:40) 
at java.net.SocketException.<init>(SocketException.java:29) 
at javax.net.SocketFactory.createSocket(SocketFactory.java:2) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:585) 
at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(Unknown Source) 
at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(Unknown Source) 
at org.apache.commons.httpclient.HttpConnection.open(Unknown Source) 
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Unknown Source) 
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(Unknown Source) 
at org.apache.commons.httpclient.HttpClient.executeMethod(Unknown Source) 
at org.apache.commons.httpclient.HttpClient.executeMethod(Unknown Source) 
at co.com.personalsoft.ftpseguro.utilidades.TransmisionHTTP.ejecutarTransmisionHTTP(TransmisionHTTP.java:107) 
at co.com.personalsoft.ftpseguro.utilidades.TransmisionFTPNew.ejecutarTransmisionAuto(TransmisionFTPNew.java:483) 
at co.com.personalsoft.ftpseguro.utilidades.TransmisionFTPNew.ejecutarTransmision(TransmisionFTPNew.java:1016) 
at co.com.personalsoft.ftpautomatico.ConexionThread.run(ConexionThread.java:58) 
at java.lang.Thread.run(Thread.java:595) 

Та же ошибка возникает при использовании HTTP-клиента 3.1.

Сервер приложений My Environment: сервер приложений Websphere 6.1.0.23 Java: JDK 1.5.0.16


person shyam sundar    schedule 15.11.2009    source источник
comment
Работает ли он вне вебсферы? Возможно, websphere заменит фабрику сокетов?   -  person bmargulies    schedule 16.11.2009
comment
это работает на сервере приложений websphere 5.1. Ошибка обнаружена только в WAS 6.1.   -  person shyam sundar    schedule 16.11.2009
comment
Я вижу это в RAD 7.0 и тестовой среде WAS 6.1. Точно такой же код работает, когда я запускаю его с использованием последней версии JDK, но любая версия, используемая в тестовой среде WAS 6.1, дает сбой. Похоже, это связано с конкретной версией JDK: old.nabble.com / и stackoverflow.com/questions/116635/   -  person Suppressingfire    schedule 08.12.2009


Ответы (2)


На самом деле более полный ответ, чем подавление огня,

  1. Добавьте com.ibm.ws.admin.client_7.0.0.jar в сборку Java.

    Это решает проблему java.lang.NoClassDefFoundError: com.ibm.ffdc.Manager error.

  2. Добавьте в настройку:

    import java.security.Security;
    ...
    Security.setProperty("ssl.SocketFactory.provider", "com.ibm.jsse2.SSLSocketFactoryImpl");
    

    Это решает Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory

person Albert T. Wong    schedule 29.01.2011

Когда я включил javax.net.debug, я заметил, что отсутствует класс com.ibm.websphere.com.ibm.websphere.ssl.protocol.SSLSocketFactory.

У меня возникли проблемы с модульными тестами, которые вызывают httpclient. В итоге я добавил эту строку в мой TestClass.setUp()

Security.setProperty("ssl.SocketFactory.provider", "com.ibm.jsse2.SSLSocketFactoryImpl");
person Suppressingfire    schedule 08.12.2009