commonj.work.WorkManager日程安排仅接受工作而不开始工作

时间:2019-06-14 15:08:20

标签: multithreading workmanagers commonj

我正在尝试将UI应用程序(使用commonj.Workmanager实现)从IBM Websphere迁移到Apache Tomcat + HTTPD。作为应用程序的一部分,任何时候,我们都会在MQ上接收消息,生成workItem并使用workManager.schedule(worker)方法对其进行调度。当它作为初始化Servlet的一部分执行时,此方法有效。但是,一旦应用程序启动并运行后,新消息进入队列,schedule方法将接受工作,而不会启动工作线程。你能帮忙吗?

我尝试将WorkItems添加到列表中并等待它们,但是线程没有启动,应用程序一直等到我不得不手动将其杀死。

我还尝试查找wi.getResult()和workItem.getStatus()的输出。结果是工作者对象和状态为1。尽管等待了很长时间,但工作仍未开始。

我检查它是否正在等待任何其他资源,它不需要任何其他资源。正在使用Workmanager异步执行它,以提高性能。

也没有抛出异常。

WorkManager wm = ServiceLocator.getInstance().getWorkManager("wm/default");
          VerifyWorker worker = null;
          worker = new VerifyWorker();
           try
          {
             WorkItem wi= wm.schedule(worker);
              System.out.println("Result: "  + wi.getResult());
              System.out.println("Status::::: " + wi.getStatus());

            }      catch (WorkException e)
          {
            e.printStackTrace();
          }
          catch (IllegalArgumentException e)
          {
            e.printStackTrace();
          } 
        }
        catch (ServiceLocatorException e)
        {
          e.printStackTrace();
        }

VerifyWorker.java实现Work:

此方法具有一个运行方法,该方法对此工作线程具有业务逻辑。

预期:应执行VerifyWorker的run()中的逻辑。 实际:未调用run()方法。没有例外。状态为1(工作已接受但尚未开始)

0 个答案:

没有答案