Остановить систему JADE (агенты Java)

Я запускаю JADE, встроенный в программу Java, то есть не с java jade.Boot ... . Теперь я хотел остановить систему JADE, но не нашел хорошего способа сделать это. Я могу выйти из всей программы с помощью System.exit (), но это не то, что я хочу делать.

Я пробовал несколько разных вещей, и мне удалось остановить поведение моего агента, но пара потоков продолжает работать: AMS, DF, веб-сервер, диспетчер таймера JADE, несколько потоков Deliverer и т. д.

Вот как выглядит мой текущий метод завершения работы:

  @Override
  public void shutdown() {
    // TODO This does not work yet..
    try {
      for (WeakReference<AgentController> acr : agents) {
        AgentController ac = acr.get(); // jade.wrapper.AgentController 
        if ( ac != null ) ac.kill();
      }
      container.kill(); // jade.wrapper.AgentContainer
      Runtime.instance().shutDown(); // jade.core.Runtime
    } catch ( StaleProxyException e ) {
      e.printStackTrace();
    }
  }

Причина, по которой я хочу сделать то, что у меня есть несколько тестов JUnit для моего система агентов.

Есть идеи, как это сделать?

11
задан jzd 11 August 2011 в 12:25
поделиться