2

私はSpring 4.0.3.RELEASEバージョンで作業しています。私は安らかに電話をかけることができます。しかし、私はHTTP接続が高価で、接続プールを使うことを考えました。私はthisthisのような記事はほとんど読んでいません。依存関係をMaven3に組み込み、コンパイルするとすべてうまくいきます。実行時に問題が発生します。 このコードでは、PoolingHttpClientConnectionManagerのクラスが見つかりません。RestTemplate用のHTTP接続プールを設定する際のWebsphereの問題

public RestTemplate restTemplate(){ 
    HttpHost host = new HttpHost("localhost", 9081); 
    PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); 
    // Increase max total connection to 200 
    cm.setMaxTotal(200); 
    cm.setDefaultMaxPerRoute(50);  
    cm.setMaxPerRoute(new HttpRoute(host), 20); 

    HttpClientBuilder httpClientBuilder = HttpClientBuilder.create().setConnectionManager(cm); 
    HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(
      httpClientBuilder.build()); 
    return new RestTemplate(requestFactory); 
} 

そして、このコードで、私はHttpClientsのためのクラスが見つからない例外を取得。

public RestTemplate restTemplate(){ 
     RestTemplate restTemplate = new RestTemplate(); 
     HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); 
     requestFactory.setConnectTimeout(20000); 
     requestFactory.setReadTimeout(20000);  
     restTemplate.setRequestFactory(requestFactory); 
     return restTemplate; 
    } 

私はWebsphere 8.5にデプロイしています。そして、4.0.1から4.5.2の異なるバージョンのhttpclientを別のスコープで提供しました(提供、コンパイル)。 正しい方向のヒントがあれば、事前にお知らせください。

答えて

1

これは基本的にWebsphere 8以上のバージョンで、httpclientとjvmライブラリを含む問題です。幸いにも、私たちのエンタープライズWebsphereはすべて7.5.xバージョンです。したがって、httpclientを耳にバンドルすると、プロダクションやプロダクションで問題は発生しません。

Websphere 8.xバージョンを使用する必要がある人は、共有分離ライブラリのアプローチas defined hereを使用してください。私は私のローカル8.5 Websphereのためにそれを使用し、それはきれいに動作します。

0

アプリケーションを停止してwebsphereののモジュールタブを管理し、「クラスローダの順序」コンボボックスで「親の最後」の項目 を選択し、アプリケーションを起動する必要があります。問題は解決しました...

+0

これは正しい方法ではありません。マークされた答えで述べたように、共有ライブラリ・アプローチは、Websphereコンテナ・ライブラリーとは異なる、jarを参照する正しい方法です。 –

関連する問題