Иногда я не могу подключиться к сокету с помощью php java bridge

Мы используем Java-мост из PHP-приложения для подключения к Java-приложению. Но иногда соединение не удается подключиться. Ниже приведена функция, используемая для подключения. Я не понимаю, в чем проблема. Иногда это работает, а иногда не удается подключиться. Какие-либо постоянные проблемы с подключением или количество установлено?

function open() {
            $errno = null;
            $errstr = null;
            $socket = JAVA_PERSISTENT_SERVLET_CONNECTIONS ?
                    pfsockopen("{$this->ssl}{$this->host}", $this->port, $errno, $errstr, 20) :
                    fsockopen("{$this->ssl}{$this->host}", $this->port, $errno, $errstr, 20);
            if (!$socket)
                throw new java_ConnectException("Could not connect to the J2EE server {$this->ssl}{$this->host}:{$this->port}. Please start it. Or define('JAVA_HOSTS', 8080); define('JAVA_SERVLET', false); before including 'Java.inc' and try again. Error message: $errstr ($errno)\n");
            stream_set_timeout($socket, -1);
            return $socket;
        }

     function java_HttpHandler($protocol, $ssl, $host, $port) {
            parent::java_SimpleHttpHandler($protocol, $ssl, $host, $port);
            try {
                $this->socket = $this->open();
            } catch (Exception $e) {
                $cogLink = "http://xxxx.xx.com/products/sup_products.asp?prod_id=81174";
    echo "eeeeerrrr";
    }
}

1 ответ

Какие-либо постоянные проблемы с подключением или количество установлено?

Скорее всего на заднем конце кончились ручки. Обратите внимание, что для того, чтобы получить постоянное соединение с Java-продолжением, вам сначала нужно отправить сервлетному серверу запрос POST. После этого вы можете выполнить pfsockopen() для "продолжения" Java, которое вернул механизм сервлета, и использовать запрос протокола.

(F p="A"/)

перерабатывать- и

(F p="F"/)

положить "продолжение" обратно в бассейн.

Я проверил код Java.inc, и он не содержит код, который вы опубликовали. Поэтому я предполагаю, что вы написали собственный код для эмуляции Java.inc.

Если это так, убедитесь, что не превышает размер пула потоков моста (по умолчанию 20).

Другие вопросы по тегам