У меня есть CXF service
и установлен тайм-аут на это:
@Bean(name = "MyPortType")
public MyPortType myPortType() {
JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
jaxWsProxyFactoryBean.setServiceClass(MyPortType .class);
jaxWsProxyFactoryBean.setAddress(myUrl);
jaxWsProxyFactoryBean.getInInterceptors().add(new LoggingInInterceptor());
jaxWsProxyFactoryBean.getOutInterceptors().add(new LoggingOutInterceptor());
jaxWsProxyFactoryBean.getOutInterceptors().add(new FaultOutInterceptor());
jaxWsProxyFactoryBean.getOutInterceptors().add(new FaultOutInterceptor());
MyPortType myPortType = (MyPortType ) jaxWsProxyFactoryBean.create();
Client client = ClientProxy.getClient(signingPortType);
configClient(client, 60000L, 30000L);
return myPortType ;
}
private void configClient(Client client, long connectionTimeout, long receiveTimeout) {
if (client != null) {
HTTPConduit conduit = (HTTPConduit) client.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setConnectionTimeout(connectionTimeout);
policy.setReceiveTimeout(receiveTimeout);
conduit.setClient(policy);
}
}
Я установил тайм-аут соединения и тайм-аут приема.И нет, я пытаюсь использовать этот сервис в своем коде:
try {
//create request
myPortType.sendRequest(myRequest);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
Как я могу поймать TimeOutException?
, если я попробую следующее:
} catch (Exception ex) {
if (ex instanceof SocketTimeoutException) {
log.error(ex .getMessage(), ex );
}
else if (ex instanceof ConnectException) {
log.error(ex .getMessage(), ex );
}
}
Intellij IDE скажет:
Condition 'ex instanceof SocketTimeoutException' is always 'false' less... (Ctrl+F1)
РЕДАКТИРОВАТЬ
public byte[] sign(SigningRequestType request) throws SigningFaultMessage;