2013-12-18 3 views
0

Не уверен, что другие видели это, но я не могу понять, что такое сделка ... Я использую профиль 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

Любая помощь будет оценена

ответ

1

Фигурные это ... Мои HttpClient Класс помощника был упакован в связку как часть функции. Пакет не импортировал javax.net.ssl, чтобы класс не смог его найти. Doh.

+0

Точно правильно .. Это именно то, что я собирался спросить. ;) – ebullient

Смежные вопросы