u*e 发帖数: 965 | 1 写了一个应用。 JSP得到输入的serial num --> Servlet访问数据库 --〉结果通过
socket连接打印机打印。
运行没有问题, 但是10秒内再输入另一个serial num, 就出现超时。半分钟后,就没
有问题。在main()里运行试验过了,多频繁都没有问题。
请帮忙看看,谢谢了。
------------------------------------------------
java.net.ConnectException: Connection timed out: connect
java.net.DualStackPlainSocketImpl.connect0(Native Method)
java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl
.java:69)
java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:
337)
java.net.AbstractPlainSocketImpl.connectToAddress(
AbstractPlainSocketImpl.java:198)
java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:
180)
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
java.net.Socket.connect(Socket.java:579)
java.net.Socket.connect(Socket.java:528)
java.net.Socket.(Socket.java:425)
java.net.Socket.(Socket.java:208)
shk.fis.FailureLabelPrintServlet.processRequest(FailureLabelPrintServlet
.java:113)
shk.fis.FailureLabelPrintServlet.doPost(FailureLabelPrintServlet.java:
143)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) |
g*****g 发帖数: 34805 | 2 Looks like your printer cannot take another connection. If previous
operation has returned, you want to close that connection explicitly
in a finally clause.
DualStackPlainSocketImpl
【在 u*e 的大作中提到】 : 写了一个应用。 JSP得到输入的serial num --> Servlet访问数据库 --〉结果通过 : socket连接打印机打印。 : 运行没有问题, 但是10秒内再输入另一个serial num, 就出现超时。半分钟后,就没 : 有问题。在main()里运行试验过了,多频繁都没有问题。 : 请帮忙看看,谢谢了。 : ------------------------------------------------ : java.net.ConnectException: Connection timed out: connect : java.net.DualStackPlainSocketImpl.connect0(Native Method) : java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl : .java:69)
|
u*e 发帖数: 965 | 3 Socket clientSocket = new Socket(ip, port);
clientSocket.close();
这2行放在main()没问题,放在Servlet里就不能频繁执行.
【在 g*****g 的大作中提到】 : Looks like your printer cannot take another connection. If previous : operation has returned, you want to close that connection explicitly : in a finally clause. : : DualStackPlainSocketImpl
|
g*****g 发帖数: 34805 | 4 Well, I would synchronize the function in servlet to
see if that helps.
【在 u*e 的大作中提到】 : Socket clientSocket = new Socket(ip, port); : clientSocket.close(); : 这2行放在main()没问题,放在Servlet里就不能频繁执行.
|
u*e 发帖数: 965 | 5 直接deploy到LINUX, 运行没有一点问题.
花了10几个小时, 不明不白的. |
y***d 发帖数: 2330 | 6 估计应该给这个 socket 设置什么 tcp/ip reuse 参数;java 里面不知道怎么用,c
的话还成...
看了 doc,估计你应该调用 setReuseAddress。... 不过这个应该是在 listen 的一端
的问题...
你的页面是否设置了允许并行?
【在 u*e 的大作中提到】 : Socket clientSocket = new Socket(ip, port); : clientSocket.close(); : 这2行放在main()没问题,放在Servlet里就不能频繁执行.
|
u*e 发帖数: 965 | 7 放在公司windows server上的tomcat里也没有问题, 就是在我的PC上time out. 估计是
网络安全上的问题. |