有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在JavaSwing中使用SwingWorker的EJB3.0有状态会话bean的不同对象

我有一个定制的ProgressBar面板在Swing中,我想显示一个长时间操作的进度。 所以我创造了两个Swingworker:

  1. 在bean管理的有状态会话bean(lengthyTask)中执行实际冗长操作的一个
  2. 根据标志(statusTask)在循环中向ssb请求进度的程序

ssb使用布尔变量来标记是否完成

我的问题是,在事件调度线程和新创建的线程中,即使ssb被分配给了最终变量,ssb接缝仍然是不同的对象。 当statusTask请求ssb时。isDone(),它返回false,尽管我确信这个冗长的任务已经完成,没有错误

例如:

final ProgressPanel p = new ProgressPanel();
final StatefulSessionBean ssb = getSSB();
p.print(ssb);
SwingWorker lengthyTask = new SwingWorker() { public void doInBackground(){p.print(ssb);} };
SwingWorker statusTask = new SwingWorker() {public void doInBackground(){p.print(ssb);} };
lengthyTask.execute();
statusTask.execute();

代码将打印出不同的对象。 通过swing应用程序使用EJB3与JBoss 4.2.3通信的方式,查找是通过JNDI完成的

有没有人有过类似的经历,或者理解为什么每个线程中的对象都不一样? 谢谢大家的意见


共 (0) 个答案