0

我刚开始使用axis2c(linux上的rev 1.5),我重写了一个简单的服务,它是数学服务的添加功能的副本。

看起来一切正常,但在程序结束时,当服务应该发回总和的结果时,它会报告错误“没有操作存在”。

我将我的服务称为“ctictrlintf”,在 ctictrlintf_invoke 函数中,我使用要添加的 2 参数获取该节点。

这里使用 axiom_node_to_string api 打印的节点的内容。

<ns1:test1 xmlns:ns1="http://ws.apache.org/axis2/services/ctictrlintf">
<param1>40</param1>
<param2>8</param2>
</ns1:test1>

在函数 ctictrlintf_invoke 结束时,返回一个带有上瘾结果的点头。

<ns1:result xmlns:ns1="http://axis2/test/namespace1">48</ns1:result>

之后发生的事情报告如下。

在 addr_out_handler.c 的某个地方,程序报告了错误“没有操作存在”并中止操作。

[debug] phase.c(210) Invoke the handler AddressingOutHandler within the phase MessageOut
[info]  Starting addressing out handler
[debug] addr_out_handler.c(133) No action present. Stop processing addressing
[info]  Request served in 0.012 seconds

这个错误是什么意思,图书馆应该采取什么行动来完成它的工作?

最好的问候,恩佐

添加 18.07.2013 16:56

在配置文件axis2.xml里面仍然有启用寻址模块

<!-- ================================================= -->
<!-- Global Modules  -->
<!-- ================================================= -->
<module ref="addressing"/>

并且当服务器启动时,日志报告一些关于激活寻址的注释

 [debug] conf_builder.c(234) No custom dispatching order found. Continue with the default dispatching order
 [debug] conf_builder.c(379) Module addressing found in axis2.xml
 [debug] class_loader.c(140) /usr/local/axis2c/lib/libaxis2_http_sender.so shared lib loaded successfully
 [debug] class_loader.c(140) /usr/local/axis2c/lib/libaxis2_http_receiver.so shared lib loaded successfully
 [debug] dep_engine.c(1283) axis2_dep_engine_load_module_dll: DLL path is : /usr/local/axis2c/modules/addressing/libaxis2_mod_addr.so
 [debug] class_loader.c(140) /usr/local/axis2c/modules/addressing/libaxis2_mod_addr.so shared lib loaded successfully
 [debug] dep_engine.c(1283) axis2_dep_engine_load_module_dll: DLL path is : /usr/local/axis2c/modules/logging/libaxis2_mod_log.so
 [debug] class_loader.c(140) /usr/local/axis2c/modules/logging/libaxis2_mod_log.so shared lib loaded successfully
 [debug] svc_builder.c(318) DLL path is : /usr/local/axis2c/services/ctictrlintf/libctictrlintf.so
 [debug] svc_builder.c(318) DLL path is : /usr/local/axis2c/services/echo/libecho.so
 [debug] svc_builder.c(318) DLL path is : /usr/local/axis2c/services/math/libmath.so
 [debug] phase_holder.c(139) Add handler AddressingInHandler to phase Transport

并且服务代码已经有以下调用

/* Create EPR with given address */
endpoint_ref = axis2_endpoint_ref_create(env, address);

/* Setup options */
options = axis2_options_create(env);
axis2_options_set_to(options, env, endpoint_ref);
axis2_options_set_action(options, env, "http://www.aesys.com/axis2/services/ctictrlintf/test1");

/* Set service client options */
axis2_svc_client_set_options(svc_client, env, options);

/* Engage addressing module */
axis2_svc_client_engage_module(svc_client, env, AXIS2_MODULE_ADDRESSING);
4

1 回答 1

1

此消息由寻址模块产生,这不是错误。

您的服务没有寻址支持,也没有发送或接收任何特定于寻址的标头。

有关 Axis2/C 中的 WS-Addressing 支持的信息在这里

于 2013-07-18T10:08:35.607 回答