C++ 如何在XMLRPC-C++;
下一个场景是: 我有一个XMLRPC-C++应用程序,在端口=8081上侦听连接。它使用xmlrpc-c库作为下一步,实现了一个深渊服务器:C++ 如何在XMLRPC-C++;,c++,web-services,xml-rpc,xmlrpclib,simplexmlrpcserver,C++,Web Services,Xml Rpc,Xmlrpclib,Simplexmlrpcserver,下一个场景是: 我有一个XMLRPC-C++应用程序,在端口=8081上侦听连接。它使用xmlrpc-c库作为下一步,实现了一个深渊服务器: xmlrpc_c::serverAbyss myAbyssServer( myRegistry, //handler of methods port, //8081 "xmlrpc_log" ); 当我从一个调用许多XMLRPC方法的脚本创建多个连接时,它工
xmlrpc_c::serverAbyss myAbyssServer(
myRegistry, //handler of methods
port, //8081
"xmlrpc_log"
);
当我从一个调用许多XMLRPC方法的脚本创建多个连接时,它工作得很好。
脚本如下所示:
脚本1:
rpc.method1(参数);
rpc.method2(参数);
rpc.methodN(参数)
如果在执行此脚本时使用netstat和xmlrpc_日志检查服务器中的连接,则输出类似于xmlrpc-server:8081 xmlrpc-CLIENT:SOME TIME_WAIT。尽管XMLRPC_客户端IP相同,但在每次rpc.method调用之前,它都会创建一个新的连接
当我在同一个客户机中执行其中两个脚本时,就会出现问题。这意味着,一个脚本中的调用rpc.methodM(参数)与另一个脚本中的rpc.methodN(参数)在同一个客户端中同时执行。
这会在服务器中产生崩溃,XMLRPC-server会一直停机,直到重新启动进程
我阅读了《深渊帮助》,runOnce()方法没有帮助。默认情况下,如上所述调用构造函数,对于Abysis服务器,MaxConnections默认为30,超时为15秒
是否有一些配置可避免此崩溃?我需要同时支持多个客户端和多个连接
谢谢你的帮助
真诚地,
卢丘克斯。嗯。显然,服务器正在处理多个连接并支持pthreads的多线程处理。问题应该出在我的RPC调用执行的代码中,我想这是因为存在可重入/线程安全问题
- 在与其他项目进行了一些休息之后,我回到了这段代码,问题出现在一个自然语言库中,使用了一些不可重入的方法。他们解决了,我解决了:)-