我的要求如下。
我有一个用java开发的web应用程序。
我在html页面上有个链接。当第一个客户端单击html页面中的submit按钮时,批处理文件应该会运行。
同时,当另一个客户端单击submit按钮时,他应该会得到页面正忙的消息。
如果第一个客户端单击release按钮,则其他客户端必须能够运行批处理文件。
我该怎么做呢?
发布于 2009-02-25 08:16:31
单击submit按钮时设置一个标志,单击release按钮时清除该标志。
根据您的体系结构,标志可以是代码中的布尔变量、数据库中某处的特殊条目或临时文件中的任何内容。
单击submit按钮时,检查该标志是否已设置。如果是,则返回一条错误消息,指出该页正忙。
在伪代码中:
if (flagIsSet()) {
  showPageIsBusy();
} else {
  setFlag();
  startBatchFile();
}请记住,当批处理文件完成或单击release按钮并位于finally块中的某个位置时,要清除该标志。
您还必须确保只有启动批处理文件的客户端才能释放它并清除该标志。
正如Avi在评论中指出的那样,您还应该记住同步对标志的访问。
发布于 2009-02-25 08:18:54
伪算法:
修改批处理文件以在批处理操作之前和之后运行servlet。
在运行批处理文件之前,设置将注册正在执行的文件或数据库或会话变量的servlet或标志,并在批处理文件完成时设置将注册正在释放的文件或数据库或会话变量的servlet或标志
当用户单击release按钮时,运行将重新发布标志的同一个servlet。
当用户提交submit按钮时,检查该标志是已执行还是已释放,这取决于您向客户端发出的警报。
发布于 2009-02-25 08:33:29
您可以在servlet类中使用一个字段(否则是一个大的nono )作为标志。
https://stackoverflow.com/questions/585108
复制相似问题