我有一个新的tomcat应用服务器在tomcat 6,java 6(openjdk),centos 6.2上运行 . 服务器是在centos 6.2主机上的qemu-kvm下运行的虚拟机 . 主机和客户端都是64位 .
我有一个连接打开的情况(从连接池)然后“长计算”发生约4小时,在此期间不使用连接 . 最后,发出“commit”,服务器给出“连接重置”异常,具体为:
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:185)
at oracle.net.ns.Packet.receive(Packet.java:282)
at oracle.net.ns.DataPacket.receive(DataPacket.java:103)
at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:230)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:175)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:100)
at oracle.net.ns.NetInputStream.read(NetInputStream.java:85)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:122)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:78)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1179)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1155)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:279)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C7Ocommoncall.doOCOMMIT(T4C7Ocommoncall.java:75)
at oracle.jdbc.driver.T4CConnection.doCommit(T4CConnection.java:558)
数据库服务器和客户端在同一子网上,但服务器是真正的物理主机,显然app-server是在同一子网上的物理机器内运行的guest虚拟机 .
主持人使用“桥接”网络 .
这可能不是软件问题,而是linux os配置(iptables?)问题,但我真的不知道 .