0

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

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

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

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

但它们不会同时运行。每次完成列表中的字符串时如何获取状态,以便更新进度监视器?

4

1 回答 1

0

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

于 2014-06-10T12:07:46.403 回答