内部连接器错误 (1002) - 调用线程在等待解除阻塞的响应时超时
Internal Connector Error (1002) - The calling thread timed out while waiting for a response to unblock it
我有一个 Java 1.8 应用程序试图与节点 v8.10 应用程序通信。
两者都 运行 在同一台 (AWS EC2 ubuntu 18.04) 服务器上。
Java 应用程序是 运行 在 tomcat 8 容器中,使用 https,在 8443 端口上。
节点应用程序 运行 在 pm2 容器 v4.4.1 中,也在 8888 端口上使用 https。
Java应用程序调用节点应用程序的路由,使用POST和一些请求体参数。
如果我 post 使用 postman 进行查询,或者如果我将本地开发 java 服务器插入生产节点应用程序,则一切正常。
但是当两者都在生产服务器上运行时,我有这个错误:
Internal Connector Error (1002) - The calling thread timed out while waiting for a response to unblock it.
at org.restlet.resource.ClientResource.handle(ClientResource.java:870)
at org.restlet.resource.ClientResource.post(ClientResource.java:1209)
...
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
这是我使用的 Maven 仓库:
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet</artifactId>
<version>2.0.14</version>
</dependency>
这是 java 端的代码:
Form form = new Form();
Client client = null;
ClientResource resource = null;
Representation response = null;
form.add("something", "somevalue");
try {
client = new Client(new Context(), Protocol.HTTPS);
resource = new ClientResource(resourceURI);
resource.setNext(client);
response = resource.post(form.getWebRepresentation());
} finally {
try {
response.exhaust();
} catch(IOException ioe) {
ioe.printStackTrace();
}
response.release();
resource.release();
}
解决方案是在服务器端编辑 /etc/hosts 文件,并将 DNS 添加到本地主机定义中。
这样,DNS 解析就在本地完成,无需通过互联网再次在 AWS 服务器上循环,这似乎阻止了这种情况。
sudo nano /etc/hosts
127.0.0.1 localhost www.mysite.xyz
我有一个 Java 1.8 应用程序试图与节点 v8.10 应用程序通信。 两者都 运行 在同一台 (AWS EC2 ubuntu 18.04) 服务器上。 Java 应用程序是 运行 在 tomcat 8 容器中,使用 https,在 8443 端口上。 节点应用程序 运行 在 pm2 容器 v4.4.1 中,也在 8888 端口上使用 https。
Java应用程序调用节点应用程序的路由,使用POST和一些请求体参数。
如果我 post 使用 postman 进行查询,或者如果我将本地开发 java 服务器插入生产节点应用程序,则一切正常。 但是当两者都在生产服务器上运行时,我有这个错误:
Internal Connector Error (1002) - The calling thread timed out while waiting for a response to unblock it.
at org.restlet.resource.ClientResource.handle(ClientResource.java:870)
at org.restlet.resource.ClientResource.post(ClientResource.java:1209)
...
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
这是我使用的 Maven 仓库:
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet</artifactId>
<version>2.0.14</version>
</dependency>
这是 java 端的代码:
Form form = new Form();
Client client = null;
ClientResource resource = null;
Representation response = null;
form.add("something", "somevalue");
try {
client = new Client(new Context(), Protocol.HTTPS);
resource = new ClientResource(resourceURI);
resource.setNext(client);
response = resource.post(form.getWebRepresentation());
} finally {
try {
response.exhaust();
} catch(IOException ioe) {
ioe.printStackTrace();
}
response.release();
resource.release();
}
解决方案是在服务器端编辑 /etc/hosts 文件,并将 DNS 添加到本地主机定义中。 这样,DNS 解析就在本地完成,无需通过互联网再次在 AWS 服务器上循环,这似乎阻止了这种情况。
sudo nano /etc/hosts
127.0.0.1 localhost www.mysite.xyz