Кроме того, вероятно, есть некоторые другие интересные различия между вашей системой Windows и сервером Linux. Вы подключаетесь к тому же URL? Сетевой конфиг / брандмауэр похож? Возможно, вы можете попробовать запустить Linux локально, чтобы сузить его. Я не ожидаю, что это различие между Java на вдовах и Linux, которое является причиной этого; если вы не используете разные версии и одна из них имеет ошибку.

инающий, когда дело доходит до HTTP-соединений. В настоящее время я работаю с SAAJ api, чтобы иметь мой клиент на основе мыла, где для обработки таймаутов я в конечном итоге использовал URLStreamHandler для свойств HTTP-соединения с конечными точками.

Проблема в том, что этот тайм-аут работает для моей системы на базе Windows, однако он не работает для сервера Linux, на котором он будет запущен.

ниже приведен код для извлечения конечной точки с заданными свойствами. Это HTTP-соединение POST.

    URL endpoint = new URL (null, url, new URLStreamHandler () {
        protected URLConnection openConnection (URL url) throws IOException {
            // The url is the parent of this stream handler, so must create clone
            URL clone = new URL (url.toString ());
            HttpURLConnection connection = (HttpURLConnection) clone.openConnection();
            connection.setRequestProperty("Content-Type",
                    "text/xml");

            connection.setRequestProperty("Accept",
                    "application/soap+xml, text/*");

            // If we cast to HttpURLConnection, we can set redirects
            // connection.setInstanceFollowRedirects (false);
            connection.setDoOutput(true);
            connection.setConnectTimeout(3 * 1000);
            connection.setReadTimeout(3 * 1000);
            return connection;

для части SAAJ API ниже приведена довольно простая реализация

    SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory
            .newInstance();
    soapConnection = soapConnectionFactory.createConnection();

    is = new ByteArrayInputStream(command.getBytes());

    SOAPMessage request = MessageFactory.newInstance(
            SOAPConstants.SOAP_1_1_PROTOCOL).createMessage(
                    new MimeHeaders(), is);

    MimeHeaders headers = request.getMimeHeaders();
    headers.addHeader("Content-Type", "text/xml");

    request.saveChanges();

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    request.writeTo(out);

    soapResponse = soapConnection.call(request, endpoint);

Это то, что системные свойства будут влиять на время ожидания соединения или чтения. Если так, пожалуйста, дайте мне знать, что может вызвать такое поведение.

 Samuel Edwin Ward29 дек. 2017 г., 20:00
Вы говорите, что это «не работает», и я могу догадаться, что вы хотите, чтобы это делало, но я не думаю, что вы сказали, что это на самом деле.
 Samuel Edwin Ward29 дек. 2017 г., 20:03
Кроме того, вероятно, есть некоторые другие интересные различия между вашей системой Windows и сервером Linux. Вы подключаетесь к тому же URL? Сетевой конфиг / брандмауэр похож? Возможно, вы можете попробовать запустить Linux локально, чтобы сузить его. Я не ожидаю, что это различие между Java на вдовах и Linux, которое является причиной этого; если вы не используете разные версии и одна из них имеет ошибку.

Ответы на вопрос(0)

Ваш ответ на вопрос