Xml rpc 使用xml_rpc启动ejabberd时出错

Xml rpc 使用xml_rpc启动ejabberd时出错,xml-rpc,ejabberd,Xml Rpc,Ejabberd,我尝试在ejabberd服务器中配置xmlrpc,但服务器在配置xmlrpc后似乎无法启动。我的ejabberd配置是: {listen,[ {{4560, "127.0.0.1"}, ejabberd_xmlrpc, [ {access_commands, [ %% This bot can only execute the command 'register', %% and if argument 'host' is provided, it must be

我尝试在ejabberd服务器中配置xmlrpc,但服务器在配置xmlrpc后似乎无法启动。我的ejabberd配置是:

{listen,[
{{4560, "127.0.0.1"}, ejabberd_xmlrpc, [
    {access_commands, [
      %% This bot can only execute the command 'register',
      %% and if argument 'host' is provided, it must be "example.org":
      {xmlrpcaccess, [register], [{host, "myhost.com"}]}
    ]}
  ]},
//many modules added here
]}.
{acl, xmlrpcbot, {user, "USER", "myhost.com"}}.
{access, xmlrpcaccess, [{allow, xmlrpcbot}]}.
当我启动服务时,我会得到以下日志:

=INFO REPORT==== 2014-04-08 17:26:45 ===
application: ejabberd
exited: {bad_return,
         {{ejabberd_app,start,[normal,[]]},
          {'EXIT',
           {noproc,
            {gen_server,call,
             [ejabberd_sup,
              {start_child,
               {ejabberd_odbc_sup_localhost,
                {ejabberd_odbc_sup,start_link,["localhost"]},
                transient,infinity,supervisor,
                [ejabberd_odbc_sup]}},
              infinity]}}}}}
type: temporary

当然,如果我注释所有xml_rpc配置行,服务就会运行。是什么导致了这个错误?谢谢

当我试图在配置文件中配置Ejabberd_xmlrpc时,我也遇到了同样的问题,并且得到了与您在问题中提到的相同的错误

当我查看erlang错误消息时,“noproc”表示“试图链接到未退出的进程”,上面的错误表示您的odbc配置存在一些问题{如果您已配置为使用mysql但未正确配置,则此消息似乎符合条件},但在使用本机db时,发生了与实际问题不同的错误

我花了将近2天的时间通过谷歌搜索和“尝试并出错”来解决这个错误,并找到了一个由巴德洛普给出的帖子,多亏了他,我终于解决了这个错误

我将一步一步地进行这个过程,这样ejabberd的任何新蜜蜂想要配置ejabberd_xmlrpc都不会感到困惑

在进一步讨论之前,我应该提到我的机器配置 我在我的Dell 64位机器上使用了ubuntu 14.04,该机器上安装了ejabberd 2.1.11,并安装了erlang版本R16B03

关于如何配置和使用ejabberd_xmlrpc,本文给出了官方文档

有关上述链接的详细信息如下所示

1.您需要获取并安装XMLRPC Erlang

 You can download XMLRPC-Erlang binary files from

 http://www.ejabberd.im/ejabberd_xmlrpc           

 or compile it yourself:

 wget http://www.ejabberd.im/files/contributions/xmlrpc-1.13-ipr2.tgz

 tar -xzvf xmlrpc-1.13-ipr2.tgz

 cd xmlrpc-1.13/src

 make

 cd ../../

 Then you can copy the *.beam files to ejabberd ebin directory,
 or add an option like this to the ejabberd start script:

 $ erl -pa '/home/jabber/xmlrpc-1.13/ebin' ...        
2.配置ejabberd以在启动时启动此侦听器:

 edit ejabberd.cfg and add on the 'listen' section:
    {listen, [
      {4560, ejabberd_xmlrpc, []},
        ...
   ]}.   

3.Start ejabberd.

4. Verify that ejabberd is listening in that port.
在第三步之前,一切都很顺利

但是在执行步骤3之后

发生错误,表示服务器无法启动,请查看ejabberd.log文件以了解更多信息,该日志文件显示错误@user3511518,他在文章中提到了这一点

如何解决此错误

在阅读Badlop的回答时,我意识到我没有在jabberd/ebin中包含一个文件,我必须编译ejabberd_xmlrpc.erl文件

巴德洛普的回答

您已经安装了xmlrpc库

现在还需要编译ejabberd_xmlrpc.erl 从下载

在进入链接之前,请确保您已经在计算机上安装了svn,现在请执行以下步骤[上面的链接中给出了相同的步骤]

svn公司

cd ejabberd模块/ejabberd_xmlrpc/trunk

/build.sh

这将构建ejabberd_xmlrpc.beam(ejabberd_xmlrpc.erl的编译版本)

$cd/(您当前的部门)/ejabberd模块/ejabberd/xmlrpc/trunk/ebin

$sudo mv ejabberd_xmlrpc.beam/home/jabberd/ebin[这是一个示例,您必须将>此文件移动到驱动器上安装ejabberd的目录的ebin文件夹]

最后重启你的机器

重新启动后,通过键入检查ejabberd的状态

$sudo ejabberdctl状态

如果显示正在运行,则在终端中执行以下命令

netstat-ntlp | grep LISTEN

如果列表显示

 tcp    0    0 0.0.0.0:4560   0.0.0.0:*       LISTEN
表示您的xmlrpc正在运行并正在侦听
http://hostname:4560

请随时提问


希望这能解决你的问题。

我也面临同样的问题。。!!!!!
You're confused there.
 tcp    0    0 0.0.0.0:4560   0.0.0.0:*       LISTEN