我有一个包含服务器和前端部分的复杂应用程序。
我正在尝试在前端部分根据服务器部分发生的操作更新进度监视器。来自服务器部分的操作从前端远程调用。但是我在获取实时通知来更新显示器时遇到了麻烦。
我的代码结构看起来有点像这样:
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,应该很容易实现。