Не уверен, что другие видели это, но я не могу понять, что такое сделка ... Я использую профиль Liberty 8.5.5.1 с IBM JDK 7 pxi3270sr5-20130619_01 (SR5)Liberty Profile и Apache HttpClient 4.2.1
У меня есть класс, которому необходимо отправить URL-запросы другому серверу (на PHP). Поэтому я написал класс HttpHelper для вызова классов apache HttpClient. Если я вызываю своего помощника из простого приложения Java, у меня нет проблем. Когда я запускаю тот же самый код в Либерти я получаю ошибку ClassNotFound для javax.net.ssl.SSLSocket
Вот мой код, который вызывает классы APACHE ...
public class HttpClientHelper
{
static Logger LOGGER = Logger.getLogger(HttpClientHelper.class.getName());
static String cname = HttpClientHelper.class.getName();
static HttpClientHelper _instance = null;
static PoolingClientConnectionManager _cm = null;
private HttpClientHelper()
{
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(
new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
_cm = new PoolingClientConnectionManager(schemeRegistry);
_cm.setMaxTotal(200);
_cm.setDefaultMaxPerRoute(20);
HttpHost shost = new HttpHost("joomla32.cal2.net", 80);
_cm.setMaxPerRoute(new HttpRoute(shost), 50);
}
protected static HttpClientHelper getInstance() {
if (_instance == null) {
_instance = new HttpClientHelper();
}
return _instance;
}
public static String getUrlBody(String url) {
String method = "getUrlBody(String url)";
LOGGER.entering(cname, method, url);
getInstance();
String val = null;
DefaultHttpClient httpclient = null;
try {
HttpContext context = new BasicHttpContext();
httpclient = new DefaultHttpClient(_cm);
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httpget, context);
HttpEntity entity = response.getEntity();
System.out.println(response.getStatusLine());
val = EntityUtils.toString(entity);
EntityUtils.consume(entity);
} catch (Exception e) {
LOGGER.logp(Level.WARNING, cname, method, e.getMessage(), url);
}catch(Error e){
LOGGER.logp(Level.INFO,cname,method,e.getMessage());
e.printStackTrace();
}
finally{
LOGGER.exiting(cname, method, val);
}
return val;
}
}
\
Ошибка вызывается на httpclient.execute (httpget, context);
Я попытался добавить обновления ssl в IBM JDK, но это не сработало. ssl.SocketFactory.provider = com.ibm.jsse2.SSLSocketFactoryImpl ssl.ServerSocketFactory.provider = com.ibm.jsse2.SSLServerSocketFactoryImpl
Любая помощь будет оценена
Точно правильно .. Это именно то, что я собирался спросить. ;) – ebullient