首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

执行一个大存储过程时,提示Socket超时,怎么处理?(急)

2011-12-30 
执行一个大存储过程时,提示Socket超时,怎么办?(急)我的一个程序里调用存储过程执行,但这个存储过程的执行

执行一个大存储过程时,提示Socket超时,怎么办?(急)
我的一个程序里调用存储过程执行,但这个存储过程的执行需要花费比较长的时间,而在这期间,weblogic后台报了异常:

SocketTimeoutException:   Read   timed   out
                at   jrockit.net.SocketNativeIO.readBytesPinned(I[BIII)I(Native   Method)
                at   jrockit.net.SocketNativeIO.socketRead(Ljava.io.FileDescriptor;[BIII)I(Unknown   Source)
                at   java.net.SocketInputStream.socketRead0(Ljava.io.FileDescriptor;[BIII)I(SocketInputStream.java:???)
                at   java.net.SocketInputStream.read(SocketInputStream.java:129)
                at   java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
                at   java.io.BufferedInputStream.read(BufferedInputStream.java:201)
                at   java.io.DataInputStream.readLine(DataInputStream.java:562)
                at   weblogic.servlet.proxy.GenericProxyServlet.readStatus(GenericProxyServlet.java:682)
                at   weblogic.servlet.proxy.HttpClusterServlet.sendResponse(HttpClusterServlet.java:1442)
                at   weblogic.servlet.proxy.HttpClusterServlet.service(HttpClusterServlet.java:306)
                at   javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
                at   weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
                at   weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
                at   weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
                at   weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7047)
                at   weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
                at   weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
                at   weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
                at   weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
                at   weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
                at   weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)

不知该怎么解决???

[解决办法]
可否改成异步的?
先发布命令
然后返回参数定时去取

我以前也有用存储过程,需要执行三四个小时的例子
[解决办法]
恐怖的设计。
[解决办法]
用springside里面的activeMQ,实现异步,可以解决你的问题
[解决办法]
只有用异步拉,同步除非把存储过程写的高效点,优化下sql,要不改下transaction的超时时间


热点排行