Openfire在一天后删除pubsub节点(不是在服务器重启或删除缓存之后)

时间:2012-06-10 17:32:55

标签: javascript xmpp openfire

一天后,我创建的所有pubsub节点都消失了,我无法通过iq节来检索它们。但它们仍然在mysql数据库中。无论如何,当我创建节点时,它们可以通过xml iq节来检索..

有人知道会发生什么吗?

Edit1:我注意到我用标准配置创建的叶子节点在一天之后不会消失。所以我认为这是我身边的配置问题。

我用:

检索pubsub节点
<iq type='get' to='pubsub.server.local'>
  <query xmlns='http://jabber.org/protocol/disco#items'/>
</iq>

或具有以下特定节点:

<iq type='get' to='pubsub.server.local'>
  <query xmlns='http://jabber.org/protocol/disco#items' node='Collection1'/>
</iq>

这不是问题,因为在创建之后我获得了有关我创建的节点的所有信息。一天后我无法找回它们。也许我的配置错误或者服务器在一天之后删除了类似缓存的内容?但我试图手动删除缓存,我可以检索新创建的节点。正如我所说,一天之后它们无法恢复。这真的很奇怪..

Edit2:配置

我创建了collection / collection / leaf以下配置:

<iq to='pubsub.server.local' type="set">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<create node="Weird"/> 
<configure><x xmlns="jabber:x:data" type="submit"> 
<field var="FORM_TYPE"><value>http://jabber.org/protocol/pubsub#node_config</value> </field>
<field var="pubsub#node_type"><value>collection</value></field>  
<field var="pubsub#title"><value>NodeName</value> </field>
<field var="pubsub#description"><value>NodeDescription</value></field>
<field var="pubsub#leaf_node_association_policy"><value>whitelist</value></field>
<field var="pubsub#leaf_node_association_whitelist"><value>owner@server.local</value></field>
</x></configure> </pubsub>
</iq>

我可以将所有者的JID放入白名单吗?

然后我在第一个集合中创建和配置集合,其中“node”属性设置为collection_1234,用于识别原因,“name”属性设置为可读名称Collection2

<iq to='pubsub.server.local' type="set">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<create node="collection_1234"/> 
<configure><x xmlns="jabber:x:data" type="submit"> 
<field var="FORM_TYPE"><value>http://jabber.org/protocol/pubsub#node_config</value> </field>
<field var="pubsub#node_type"><value>collection</value></field>
<field var="pubsub#collection"><value>Weird</value></field>   
<field var="pubsub#title"><value>Collection2</value> </field>
<field var="pubsub#deliver_payloads"><value>1</value></field>
<field var="pubsub#leaf_node_association_whitelist"><value>user1@server.local</value></field>
</x></configure> </pubsub>
</iq>

子项的负载类型(此处为Atom)必须与父集合节点(此处为none)相同吗?

然后是Collection2中的一片叶子:

<iq to="pubsub.server.local" type="set">
    
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<create node="leaf_1234"/> 
<configure><x xmlns="jabber:x:data" type="submit"> 
<field var="FORM_TYPE"><value>http://jabber.org/protocol/pubsub#node_config</value></field>
<field var="pubsub#collection"><value>collection_1234</value></field> 
<field var="pubsub#type"><value>http://www.w3.org/2005/Atom</value></field>
<field var="pubsub#persist_items"><value>1</value></field>
<field var="pubsub#max_items"><value>-1</value></field>
<field var="pubsub#type"><value>http://www.w3.org/2005/Atom</value>
<field var="pubsub#publisher">
  <value>nodeowner@server.local</value>
  <value>anotheruser@server.local</value>
</field>
</x>
</configure> </pubsub>
</iq>

我可以将节点所有者配置为发布者吗? 我省略了#publish_model变量,因为值publishers是标准的。

1 个答案:

答案 0 :(得分:0)

不确定这是否仍然相关,但它可能对其他人有所帮助:

我也有这个问题,但字母'H'(正如你在评论中描述的那样)。我可以创建以'H'开头的节点并正确使用它们,但是当重新启动openfire时,即使它确实存在于数据库中,也不会找到这些节点。 我发现这是因为名为“home”的根节点。可能因为这也是以'H'开头。我尝试为不同字符的根节点提供几个不同的名称,但这会导致一个或多个其他起始字符失败。

为了解决这个问题,我将根节点命名为“*”,问题就消失了!一种明智的方法是将数据库导出到文本文件,用“home”替换所有[根节点](我的情况下为“*”),然后再次导入,最后重新启动的Openfire。