0

我们正在使用 PHP 应用程序中的 Java 桥接器连接到 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";
    }
}
4

1 回答 1

0

是否设置了任何持久连接问题或计数?

很可能后端用完了句柄。请注意,为了获得到 java“延续”的持久连接,您必须首先向 servlet 引擎发送 POST 请求。之后,您可以 pfsockopen() 到 servlet 引擎返回的 java“延续”并使用协议请求

(F p="A"/)

回收和

(F p="F"/)

将“延续”放回池中。

我检查了 Java.inc 代码,它不包含您发布的代码。因此,我假设您已经编写了自定义代码来模拟 Java.inc。

如果是这样,请确保不超过桥接线程池大小(默认为 20)。

于 2018-02-09T18:24:47.163 回答