在 ejabberd 中安装 mod_xmlrpc 后出错

Posted

技术标签:

【中文标题】在 ejabberd 中安装 mod_xmlrpc 后出错【英文标题】:Error after installing mod_xmlrpc in ejabberd 【发布时间】:2015-03-15 15:30:25 【问题描述】:

我正在开发一个 java 项目,在该项目中我必须与 ejabberd(创建/删除 jabber 用户等)xmpp 服务器进行通信。从互联网上提供的不同建议中,我了解到 xml rpc 是实现这一目标的一种方法。

我尝试按照此线程中的建议安装 mod_xmlrpc。 Error while starting ejabberd with xml_rpc

但我在配置 mod_xmlrpc 后无法启动 ejabberd。 ejabberd 日志说,

=ERROR REPORT==== 2015-03-15 20:23:27 ===
C(<0.42.0>:gen_mod:75) : Problem starting the module mod_adhoc for host "example.com" 
 options: []
 exit: noproc,
       gen_server,call,
           [ejabberd_iq_sup,
        start_child,["example.com",mod_adhoc,process_local_iq],
        infinity]

=ERROR REPORT==== 2015-03-15 20:23:27 ===
C(<0.42.0>:gen_mod:80) : ejabberd initialization was aborted because a module start failed.

erlang 日志说,

=CRASH REPORT==== 15-Mar-2015::20:23:27 ===
  crasher:
    initial call: supervisor:ejabberd_listener/1
    pid: <0.270.0>
    registered_name: []
    exception exit: undef,
            [ejabberd_xmlrpc,socket_type,[],[],
             ejabberd_listener,'-bind_tcp_ports/0-fun-0-',1,
                 [file,"ejabberd_listener.erl",line,63],
             lists,foreach,2,[file,"lists.erl",line,1323],
             ejabberd_listener,init,1,
                 [file,"ejabberd_listener.erl",line,52],
             supervisor,init,1,
                 [file,"supervisor.erl",line,239],
             gen_server,init_it,6,
                 [file,"gen_server.erl",line,304],
             proc_lib,init_p_do_apply,3,
                 [file,"proc_lib.erl",line,239]]
      in function  gen_server:init_it/6 (gen_server.erl, line 328)
    ancestors: [ejabberd_sup,<0.42.0>]
    messages: []
    links: [#Port<0.3747>,<0.234.0>,#Port<0.3744>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 987
    stack_size: 27
    reductions: 1215
  neighbours:

=SUPERVISOR REPORT==== 15-Mar-2015::20:23:27 ===
     Supervisor: local,ejabberd_sup
     Context:    start_error
     Reason:     undef,
             [ejabberd_xmlrpc,socket_type,[],[],
              ejabberd_listener,'-bind_tcp_ports/0-fun-0-',1,
              [file,"ejabberd_listener.erl",line,63],
              lists,foreach,2,[file,"lists.erl",line,1323],
              ejabberd_listener,init,1,
              [file,"ejabberd_listener.erl",line,52],
              supervisor,init,1,[file,"supervisor.erl",line,239],
              gen_server,init_it,6,
              [file,"gen_server.erl",line,304],
              proc_lib,init_p_do_apply,3,
              [file,"proc_lib.erl",line,239]]
     Offender:   [pid,undefined,
          name,ejabberd_listener,
          mfargs,ejabberd_listener,start_link,[],
          restart_type,permanent,
          shutdown,infinity,
          child_type,supervisor]

由于我是 ejabberd 和 erlang 世界的新手,我发现很难追踪根本原因。请帮助我确定此崩溃的根本原因。

顺便说一句,还有其他方法可以从 java 服务与 ejabberd 进行通信(创建/删除 jabber 用户等)吗?

【问题讨论】:

请问你用的是什么版本的ejabberd??? 【参考方案1】:

erlang 日志说它在模块 ejabberd_xmlrpc 中找不到没有参数的函数 socket_type。因为它是一个有效的调用,并且模块和函数都存在于应用程序ejabberd中,这意味着安装过程中出现了问题(编译失败,路径错误???)

【讨论】:

以上是关于在 ejabberd 中安装 mod_xmlrpc 后出错的主要内容,如果未能解决你的问题,请参考以下文章

Ejabberd 用户身份验证失败,使用 mysql

安全性 - Ejabberd - 验证客户端

如何在ubuntu中安装scrapy

如何在 apache2 tomcat6 中安装 ffmpeg 或在 ubuntu 中安装 xampp?

如何在python2.7中安装MySQLdb 在virtualenv中安装

如何在虚拟机中安装CentOS 7系统