2

私の問題は、応答に 60 秒以上かかるリモート Web サービスを呼び出すと、タイムアウト例外が発生することです。タイムアウト チェックは必要ありません。Web サービスが終了するまで送信者を待機させたいだけです。私は設定しようとしました:

HttpSession httpSession = getThreadLocalRequest().getSession();
httpSession.setMaxInactiveInterval(120000);
getThreadLocalRequest().setAttribute("session", httpSession);

カスタムHttpRequestを作成するためにweb.xmlセッションタイムアウトを変更します(私の問題に関連しているとは思いませんが)。タイムアウトが持続します。このチェックをシャットダウンする方法はありますか?

4

2 に答える 2

1

解決策を見つけました:

/* Connect to the service */
ClientProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
factoryBean.setServiceClass(MyService.class);
factoryBean.setAddress("service-url");
myService = (MyService) factoryBean.create();
/* Retrive HTTP client policy and set the receive timeout */
Client client = ClientProxy.getClient(myService);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = httpConduit.getClient();
httpClientPolicy.setReceiveTimeout(timeoutMilliseconds);
于 2013-11-15T07:47:17.897 に答える
0

httpSession.setMaxInactiveInterval は、あなたが求めているものではありません。おそらく、URLConnection で connectTimeout と readTimeout を設定する必要があります。その方法は、リモート Web サービスの呼び出しに使用するツールによって異なります。

SOAP サービス、REST サービスなどのサービスの詳細と、サービスの呼び出しに使用するライブラリを追加できますか?

于 2013-11-14T14:32:28.563 に答える