Я пытаюсь использовать последнюю магистраль Smackx, чтобы получить, а затем подписаться на узел pubsub. Однако openfire просто отправляет мне сообщение об ошибке: элемент не найден (404).
Я создаю объекты Java из ColdFusion, поэтому фрагменты моего кода могут выглядеть забавно, но, возможно, кто-то сможет сказать мне, что я забыл.
Вот как я создаю узел:
ftype = createObject("java", "org.jivesoftware.smackx.pubsub.FormType");
cform = createObject("java", "org.jivesoftware.smackx.pubsub.ConfigureForm").init(ftype.submit);
cform.setPersistentItems(true);
cform.setDeliverPayloads(true);
caccess = createObject("java", "org.jivesoftware.smackx.pubsub.AccessModel");
cform.setAccessModel(caccess.open);
cpublish = createObject("java", "org.jivesoftware.smackx.pubsub.PublishModel");
cform.setPublishModel(cpublish.open);
cform.setMaxItems(99);
manager = createObject("java", "org.jivesoftware.smackx.pubsub.PubSubManager").init(XMPPConnection);
myNode = manager.createNode("subber", cform);
И вот как я пытаюсь добраться до него (в другом разделе кода):
manager = createObject("java", "org.jivesoftware.smackx.pubsub.PubSubManager").init(XMPPConnection);
myNode = manager.getNode("subber");
Сразу после создания узла я, кажется, могу опубликовать его следующим образом:
payload = createObject("java", "org.jivesoftware.smackx.pubsub.SimplePayload").init("book","pubsub:test:book","<book xmlns='pubsub:test:book'><title>Lord of the Rings</title></book>");
item = createObject("java", "org.jivesoftware.smackx.pubsub.Item").init(payload);
myNode.publish(item);
Однако именно вызов getNode() вызывает ошибку в моем коде.
Я проверил, что узлы создаются, проверив БД, используемую моим сервером openfire. Я вижу их там, правильно атрибутированные как листовые узлы и т. д.
Любой совет? Кто-нибудь еще что-нибудь делал с XMPP и ColdFusion? У меня был большой успех в отправке и получении сообщений с помощью CF и Smack, просто pubsub еще не работал :)
Спасибо!