0

不确定其他人是否看到了这一点,但我不知道这是什么交易......我正在使用 Liberty Profile 8.5.5.1 和 IBM JDK 7 pxi3270sr5-20130619_01(SR5)

我有一个类需要向另一台服务器(基于 PHP)发出 URL 请求。所以我写了一个 HttpHelper 类来调用 apache HttpClient 类。如果我从一个普通的 java 应用程序调用我的助手,我没有问题。当我在 Liberty 中运行完全相同的代码时,我收到 javax.net.ssl.SSLSocket 的 ClassNotFound 错误

这是我调用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

任何帮助,将不胜感激

4

1 回答 1

1

想通了...我的 HttpClient Helper 类作为功能的一部分打包在一个包中。该捆绑包没有导入 javax.net.ssl,因此该类找不到它。多哈。

于 2013-12-18T17:00:30.593 回答