远程获取通知以更新进度监视器



我有一个包含服务器和前端部分的复杂应用程序。

我正在尝试在前端部分根据服务器部分发生的操作更新进度监视器。来自服务器部分的操作从前端远程调用。但是我在获取实时通知来更新显示器时遇到了麻烦。

我的代码结构看起来有点像这样:

class frontend_class1{
       public void method {
          List<String> strings = initializeStrings();
          progressMonitor.begingTask("", noOfSteps);
          reponse = frontend_class2.method2(strings);
          progressMonitor.worked(1);
       }
class frontend_class2{
       public responseType method2(List<String> strings){
          ServerClassRemote remote = new ServerClassRemote();
          response = remote.serverMethod(strings);
          return response;
       }
class server_class{
       public serverMethod(List<String> strings){
          otherMethod(strings);
       }
       public otherMethod(List<String> strings){
          someOtherMethod(strings);
       }
       public someOtherMethod(List<String> strings){
          for (String s:Strings){
              doSomethingWithString(s);
              setStatus(true);
          }
       }
       public setStatus(boolean status){
          myVar = status;
       }
       public boolean getStatus(){
          return status;
       }

我的意图是从服务器端向前端发送一个通知,以便每次完成一个字符串时,进度监视器都会更新一个。

这就是我包含状态方法的原因:从前端询问状态是什么,在一个单独的线程中运行,理论上,与其他方法(serverMethod)同时运行,然后重置状态。像这样:

new Thread(new Runnable() {
            public void run() {
                if (remote.getChanged()) {
                    remote.setChanged(false);
                }
            }
        }).start();

但是它们不能并发运行。如何在列表中的字符串每次完成时获得状态,以便我可以更新进度监视器?

与其将状态设置为someOtherMethod,不如将更新报告与新线程一起发送到前端。如果您还没有发送此更新的方法,您可能需要让fort_end运行某种类型的服务器来至少接收这些消息。也许一些RMI,应该很容易实现。

相关内容

  • 没有找到相关文章

最新更新