一天后,我创建的所有 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>
这不是问题,因为创建后我获得了有关我创建的节点的所有信息。一天后我无法取回它们。也许我的配置错误或者服务器一天后删除了缓存之类的东西?但我尝试手动删除缓存,并且可以检索新创建的节点。正如我所说,一天后它们将无法检索。这真的很奇怪..
编辑2:配置
我创建集合/集合/叶子以下配置:
<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 放入白名单吗?
然后,我在第一个集合中创建并配置集合,出于识别原因,该集合的“节点”属性设置为 collection_1234,“名称”属性设置为可读名称 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)的负载类型必须与父集合节点(这里没有)相同吗?
然后是 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是标准的。
最佳答案
不确定这是否仍然相关,但可能对其他人有帮助:
我也遇到了这个问题,但是是字母“H”(正如您在评论中所描述的)。我可以创建以“H”开头的节点并正确使用它们,但是当重新启动 openfire 时,即使这些节点确实存在于数据库中,也不会找到它们。
我发现这是因为名为“home
”的根节点。可能是因为这也以“H”开头。我尝试为它提供几个以不同字符开头的根节点的不同名称,但这会导致一个或多个其他起始字符失败。
为了解决这个问题,我将根节点命名为“*
”,问题就消失了!一个聪明的方法是将数据库导出到文本文件,用“*
”替换所有[根节点](在我的例子中为“home
”),然后再次导入,最后重启openfire。
关于javascript - Openfire 在一天后删除 pubsub 节点(不是在服务器重启或删除缓存后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10970766/