Как удалить внешний компонент сервера OpenFire XMPP?
Я зарегистрировал внешний компонент в OpenFire. Когда мой компонент выключится, он останется на сервере OpenFire. Когда я перезапускаю этот компонент, сообщения клиентов не могут иметь полных ответов от этого компонента. Потому что некоторые из узлов этого компонента мертвы.
Так как же удалить мертвый компонентный узел? За исключением перезагрузки OpenFire.
Мой код компонента ниже:
@Test
public void testGamma() throws ComponentException, InterruptedException {
ExternalComponentManager componentManager = new ExternalComponentManager("172.16.5.254");
componentManager.setSecretKey("MyBot", "mypwd");
componentManager.setMultipleAllowed("MyBot", true);
componentManager.addComponent("MyBot", new MyRobot());
Thread.currentThread().join();
}
static class MyRobot extends AbstractComponent {
@Override
public String getDescription() {
return "This is my bot";
}
@Override
public String getName() {
return "MyWonderfulRobot";
}
@Override
protected void handleMessage(org.xmpp.packet.Message message) {
System.out.println("==================");
send(new org.xmpp.packet.Message() {{
this.setID(message.getID());
this.setFrom(message.getTo());
this.setTo(message.getFrom());
this.setType(message.getType());
this.setBody(message.getBody());
}});
System.out.println(message);
}
}
0 ответов
Openfire, вероятно, не видит закрытое соединение TCP. Он будет ждать тайм-аут, прежде чем удалит компонент (но это может занять несколько минут).
Вы предотвращаете эту проблему, звоня componentManager.removeComponent("MyBot");
как часть вашего отключения.