WebService新聞org.apache.cxf.interceptor.Fault:Could not send Messageエラー
2162 ワード
問題の説明
プロジェクトでプログラミングしたところ、WebServiceは正常に結果に戻ることができましたが、その後検索条件を変えて、サービス端末の検索時間が長すぎて、クライアントが投げました。org.apache.cxf.interceptor.Fault:Could not send Messageエラー。
ソリューション
クライアントでタイムアウト時間を延長します。コードは以下の通りです。
プロジェクトでプログラミングしたところ、WebServiceは正常に結果に戻ることができましたが、その後検索条件を変えて、サービス端末の検索時間が長すぎて、クライアントが投げました。org.apache.cxf.interceptor.Fault:Could not send Messageエラー。
ソリューション
クライアントでタイムアウト時間を延長します。コードは以下の通りです。
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(IEvalService.class);// WebService
factory.setAddress(CoreConst.PATENT_URL);// WebService
factory.getOutInterceptors().add(new ClientLoginInterceptor(CoreConst.PARENT_USERNAME,CoreConst.PARENT_PASSWORD));
IEvalService client = (IEvalService)factory.create();//
// , .
Client proxy = ClientProxy.getClient(client);
HTTPConduit conduit = (HTTPConduit) proxy.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setConnectionTimeout(30000); //
policy.setReceiveTimeout(180000);// .
conduit.setClient(policy);
ResultData info = client.loadDataFromSearch(pa,ipc, api_key, sign);//
以上のように、設定要求のタイムアウト時間は3分で、正常に結果を返すことができます。