Java 如何处理在休息时完成某件事所需的时间?

Java 如何处理在休息时完成某件事所需的时间?,java,rest,jersey,Java,Rest,Jersey,使用Jersey/JAX-RS,我有一个get处理程序,其中包含将大文件复制到另一个位置的代码。我希望能够转到URL,并能够看到复制的当前状态,即经过的时间。我如何做到这一点?在哪一边?发送者还是接收者 作为请求的一部分,发件人可以公开链接或其他内容 你可以这样做 接收站后/foo/接收站 <incoming-foo> <link rel="status" uri="sender/foo/abc/status"> </incoming-foo> 接收

使用Jersey/JAX-RS,我有一个get处理程序,其中包含将大文件复制到另一个位置的代码。我希望能够转到URL,并能够看到复制的当前状态,即经过的时间。我如何做到这一点?

在哪一边?发送者还是接收者

作为请求的一部分,发件人可以公开链接或其他内容

你可以这样做

接收站后/foo/接收站

<incoming-foo>
    <link rel="status" uri="sender/foo/abc/status">
</incoming-foo>
接收方可能“201已创建”或“303看到其他”发送方到URI接收方/foo/1

<foo>
    <content>...</content>
</foo>
此时,一个

获取接收器/foo/1

<foo>
    <content>...</content>
</foo>
可以简单地返回提供的状态链接,或将其嵌入表示中:

<foo>
    <status>incoming</status>
    <link rel="status" href="sender/foo/abc/status" />
</foo>
获取发件人/foo/abc/status

此时可能会返回挂起或排队之类的状态

然后,发送者可以自由地

放置接收器/foo/1

<foo>
    <content>...</content>
</foo>

在PUT过程中,async GET to the services仍然可以从原始服务获取状态,原始服务现在可能正在传输或包含字节/总数等。

如果我理解正确,我会假设,因为这是一个长时间运行的操作,初始POST返回一个202,使用位置标题或内容体中指向复制操作状态页的链接将是一个好方法。然后,客户机可以定期获取状态URL,当服务器完成复制时,GET可以使用303或某种机制返回一个链接来定位新创建的文件

希望有帮助