关于在weblogic中异步调用webservice
2009-09-22 00:00:00 来源:WEB开发网核心提示: 图片看不清楚?请点击这里查看原图(大图),好了,关于在weblogic中异步调用webservice(5),基本流程都列出来了,下面据此回答开篇的问题:1:如果客户端不等待结果(比如服务器端因为某些原因,对于那些web service执行时间较长,客户端又希望其他业务并行的应用,web serv
图片看不清楚?请点击这里查看原图(大图)。
好了,基本流程都列出来了。下面据此回答开篇的问题:
1:如果客户端不等待结果(比如服务器端因为某些原因,web service需要执行很长时间),直接退出的话,weblogic server是否保存调用结果,结果保存多长时间?
不会。如果客户端退出前,请求已处理,保存在FutureResultImpl将会因为客户端的退出而销毁。如果没有处理结束,服务器端回写 response的时候,虽然指向客户端的连接已经因为客户端退出而close了,但服务器端从该connection中拿到的output stream还在,服务器仍然会将response写入到该output stream中(这是写入的数据是没有接收者的),response写完后,weblogic会关闭output stream, 并close socket。
2:如果这样的异常客户端很多,对服务器有什么负面影响,比如连接资源、内存开销等。
不会。如果客户端退出前,请求已处理,则连接已经释放。如果连接保持的时间略大于web service请求在服务器段的处理时间。请求处理结束后,服务器会在回写完response后,主动断开连接(可以看到客户端至server端的连接为 TIME_WAIT)。如果客户端退出时,请求依然在服务器端上处理,客户端的退出会导致连接的CLOSE。两种情形都不会因为异常客户端而导致连接浪费。至于内存开销,服务器不会保存执行结果,请求处理结束后,直接回写客户端,所以也不会造成内存资源leak。
对于那些web service执行时间较长,客户端又希望其他业务并行的应用,这种异步调用是个不错的选择。
[]
更多精彩
赞助商链接