Как проверить тайм-аут соединения JAX-WS

Я пытаюсь проверить свойство тайм-аута соединения для клиента jaxws, который развернут на IBM Websphere Application Server 8.5. Я установил свойства тайм-аута следующим образом:

((BindingProvider) port).getRequestContext().
           put(com.ibm.wsspi.webservices.Constants.RESPONSE_TIMEOUT_PROPERTY, "30");
((BindingProvider) port).getRequestContext().
           put(com.ibm.wsspi.webservices.Constants.CONNECTION_TIMEOUT_PROPERTY, "15";

RESPONSE_TIMEOUT_PROPERTY работает нормально.

Но я понятия не имею, как проверить CONNECTION_TIMEOUT_PROPERTY. Если веб-сервис недоступен во время создания экземпляра Сервиса, я получаю следующее исключение:

javax.xml.ws.WebServiceException: The following WSDL exception occurred: 
            WSDLException: faultCode=WSDL4JWrapper : : javax.wsdl.WSDLException: 
            WSDLException: faultCode=WSDL4JWrapper : :
            java.net.ConnectException: Connection refused: connect

Если во время создания порта (при вызове метода getPort (...)) веб-сервис недоступен, я получаю следующее исключение:

javax.xml.ws.WebServiceException: 
            java.net.ConnectException: HTTP ( 404 ) Not Found address :
            http://myhost:myport/WsServer/helloService

Исключения выбрасываются немедленно. Полагаю, я что-то не так делаю. Любые указатели были бы полезны.


person John Smith    schedule 22.06.2015    source источник


Ответы (1)


На сервере должен быть открыт сокет, чтобы принять соединение.

Попробуйте что-то вроде следующего

public static void main(String[] args) {
    int port = Integer.parseInt(args[0]);
    try (ServerSocket serviceStub = new ServerSocket(port)) {
            while (true) {
                serviceStub.accept();
                System.out.println("Something connected");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {

        }
}

Запустите это на сервере (с любым нужным вам портом). Он примет соединение, но никогда не будет делать ничего, что имитировало бы ваш тайм-аут.

Как правило, все, что слушает порт и ничего не делает, должно отвечать всем требованиям.

person Sarah Phillips    schedule 22.06.2015
comment
Сара, спасибо за ответ. Тестирую ваше решение. Запрос был завершен по истечении времени ожидания ответа. Сделал дамп ниток. Поток веб-контейнера выполнял метод java/net/SocketInputStream.socketRead0(Native Method) - person John Smith; 22.06.2015
comment
Ах хорошо. Может быть, то, что тебе нужно, есть здесь. stackoverflow.com/questions/100841/ - person Sarah Phillips; 24.06.2015