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

时间:2014-06-10 12:02:43

标签: java multithreading progressmonitor

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

我正在尝试在前端部分根据服务器部分中发生的操作更新进度监视器。服务器部分的操作是从前端远程调用的。但是我无法实时通知更新显示器。

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

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();

但他们并不同时运作。每次列表中的字符串完成后我怎么能得到状态,以便我可以更新我的进度监视器?

1 个答案:

答案 0 :(得分:0)

您可以将带有新主题的更新报告发送到前端,而不是仅设置状态为someOtherMethod。 如果您还没有办法发送此更新,您可能需要让fornt_end运行某种服务器来接收至少这些消息。也许一些RMI应该足够容易实现。