Java 503“;“服务不可用”;查询给定用户(mod_mam)的存档时出错

Java 503“;“服务不可用”;查询给定用户(mod_mam)的存档时出错,java,xmpp,ejabberd,Java,Xmpp,Ejabberd,我试图通过(如示例2中所示)查询ejabberd中用户的邮件存档(jessie Backport提供的16.09版本)。用户查询其邮件存档,但不断收到“没有模块正在处理此查询”错误 与服务器的交互是通过Java客户端完成的 以下是自定义有效负载类: @XmlRootElement(name = "query", namespace = "urn:xmpp:mam:2") @XmlAccessorType(XmlAccessType.FIELD) public final class UserMe

我试图通过(如示例2中所示)查询ejabberd中用户的邮件存档(jessie Backport提供的16.09版本)。用户查询其邮件存档,但不断收到“没有模块正在处理此查询”错误

与服务器的交互是通过Java客户端完成的

以下是自定义有效负载类:

@XmlRootElement(name = "query", namespace = "urn:xmpp:mam:2")
@XmlAccessorType(XmlAccessType.FIELD)
public final class UserMessageArchiveQuery {

  @XmlAttribute(name = "queryid")
  private String queryId;

  public UserMessageArchiveQuery() {}

  public String getQueryId() {
    return queryId;
  }

  public void setQueryId(String string) {
    this.queryId = string;
  }
}
然后将其添加到会话配置中

XmppSessionConfiguration sessionConfiguration =
  XmppSessionConfiguration
    .builder()
    .extensions(Extension.of(UserMessageArchiveQuery.class))
    .build();
现在我们可以建立连接了,它可以正常工作,因为我可以相应地发送和接收消息

XmppClient client = XmppClient.create("localhost", sessionConfiguration, tcpConfiguration, boshConfiguration);
client.connect();
client.login("someuser", password);
这就是事情发展的方向。为给定用户和负载准备IQ,并查询服务器:

UserMessageArchiveQuery payload = new UserMessageArchiveQuery();
IQ iq = IQ.set(Jid.of("someuser@localhost"), payload);
return client.query(iq).getResult();
查看ejabberd日志,发送到服务器的结果XML如下所示:

<iq id="47a6204a-6ac3-453b-9dfd-7488ec6de734" to="someuser@localhost" type="set">
    <query xmlns="urn:xmpp:mam:2"></query>
</iq>

我们得到:

packet {xmlel,<<"iq">>,[{<<"type">>,<<"error">>},{<<"from">>,<<"someuser@localhost">>},{<<"xml:lang">>,<<"en-US">>},{<<"id">>,<<"47a6204a-6ac3-453b-9dfd-7488ec6de734">>}],[{xmlel,<<"query">>,[{<<"xmlns">>,<<"urn:xmpp:mam:2">>}],[]},{xmlel,<<"error">>,[{<<"code">>,<<"503">>},{<<"type">>,<<"cancel">>}],[{xmlel,<<"service-unavailable">>,[{<<"xmlns">>,<<"urn:ietf:params:xml:ns:xmpp-stanzas">>}],[]},{xmlel,<<"text">>,[{<<"xmlns">>,<<"urn:ietf:params:xml:ns:xmpp-stanzas">>}],[{xmlcdata,<<"No module is handling this query">>}]}]}]}
packet{xmllel,,[{,},{,},{,},{,},{,{,},][,},{,},{,{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},{,},},{,},},{xmlccdata,},},},{

我确信mod_mam已启用且工作正常,因为我可以在“存档”表中看到存档的消息。我不知道如何继续。目前ejabberd不支持urn:xmpp:mam:2