Java 长时间运行的请求超时
对于REST请求,我使用Jersey HTTP服务器和Jersey客户端 客户端向服务器发送一个文件,服务器处理该文件并向客户端返回响应。我的问题是,服务器上的处理可能需要几分钟,甚至可能需要1/2小时 我希望客户端知道请求在响应中是否失败或成功。但是,我将客户端上的readTimeout设置为60秒,因为我读到,将其设置为0是一种不好的做法。因此,我有时会在客户端上得到一个Java 长时间运行的请求超时,java,http,tcp,jersey,Java,Http,Tcp,Jersey,对于REST请求,我使用Jersey HTTP服务器和Jersey客户端 客户端向服务器发送一个文件,服务器处理该文件并向客户端返回响应。我的问题是,服务器上的处理可能需要几分钟,甚至可能需要1/2小时 我希望客户端知道请求在响应中是否失败或成功。但是,我将客户端上的readTimeout设置为60秒,因为我读到,将其设置为0是一种不好的做法。因此,我有时会在客户端上得到一个SocketTimeoutException 禁用readTimeout(将其设置为0)是否安全?连接超时仍然是10秒 或
SocketTimeoutException
禁用readTimeout(将其设置为0)是否安全?连接超时仍然是10秒
或者我可以使用TCP保持活动吗?据我所知,这只会在几分钟的大间隔内发送这些数据包(取决于操作系统)
如果处理成功,我还可以做些什么,而不是立即返回一个令牌,然后用令牌轮询服务器?我在某处读到一些关于心跳信号包的信息。可以使用它吗?显然,您不应该将超时设置得太高,因为这样会使线程等待。有多个请求会让许多线程等待,并导致服务器阻塞
相反,如果您不想轮询服务器以查看请求是否就绪,我建议您在请求中包含某种标识符,并让服务器在就绪时返回答案,同时包含相应的标识符,然后在客户端匹配请求和响应。我如何知道服务器何时准备就绪?这需要再次进行投票。