1

ある日、私が作成したすべての pubsub ノードがなくなり、iq スタンザ経由でそれらを取得できなくなりました。しかし、それらはまだ mysql データベースにあります。とにかく、ノードを作成すると、xml iqスタンザを介して取得できます..

何が起こるか知っている人はいますか?

Edit1: 標準構成で作成したリーフ ノードが 1 日経っても消えないことに気付きました。したがって、それは私の側の構成の問題だと思います。

次のコマンドで 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>

作成後、作成したノードに関するすべての情報を取得するので、それは問題ではありません。1日経っても取り出せません。構成が間違っているか、サーバーが 1 日後にキャッシュのようなものを削除するのでしょうか? しかし、キャッシュを手動で削除しようとしたところ、新しく作成されたノードを取得できました。私が言ったように、それらは 1 日後には取得できません。これは本当に奇妙です..

Edit2:構成

コレクション/コレクション/リーフを次の構成で作成します。

<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>

ノード所有者をパブリッシャーに設定できますか? 値 publishers が標準であるため、#publish_model 変数は省略します。

4

1 に答える 1

0

これがまだ関連しているかどうかはわかりませんが、他の人に役立つかもしれません:

私もこの問題を抱えていましたが、文字「H」でした(コメントで説明したように)。「H」で始まるノードを作成して正しく使用することはできましたが、openfire を再起動すると、これらのノードはデータベースに存在していても見つかりませんでした。「 」という名前のルート ノードが原因であることがわかりましたhome。おそらく、これも「H」で始まるためです。異なる文字で始まるルート ノードにいくつかの異なる名前を付けようとしましたが、これにより、他の 1 つまたは複数の開始文字が失敗する結果になります。

これを解決するために、ルート ノードに ' *' という名前を付けたところ、問題はなくなりました。これを行うスマートな方法は、データベースをテキスト ファイルにエクスポートし、すべての [ルート ノード] (home私の場合は ' ') を ' *' に置き換えてから、再度インポートし、最後に openfire を再起動することです。

于 2013-02-08T09:40:21.367 に答える