2013-07-18 44 views
0

我剛剛開始使用axis2c(Linux上的rev 1.5),我重寫了一個簡單的服務,它是數學服務的添加功能的副本。addr_out_handler.c(133)不存在動作。停止處理尋址

似乎一切都好,但在過程結束時,當服務應該發回總和的結果時,它報告錯誤「無動作存在」。

我打電話給我的服務「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中的某處程序報告錯誤「No action present」並中止操作。

[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 

什麼意思這個錯誤和什麼行動應該要求圖書館完成其工作?

最佳reagards,恩佐

新增2013年7月18日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); 
+0

如果您不直接使用尋址,則不應包含它。你爲什麼認爲這個處理能夠阻止你傳出的消息你的客戶沒有收到迴應?您是否嘗試過在Eclipse中使用諸如SoapUI或Web服務資源管理器之類的Web服務測試器來調用服務? – loentar

+0

嗨Loentar我剛剛問過一些答案,而不是其他問題。我正在尋找一個簡單的例子來開始學習axis2c。我用數學,開始改變它,但似乎有一些隱藏的複雜性,我在繼續之前需要知道。 – enzo2

+0

然後您不應該添加尋址支持。只需忽略「不存在任何操作,停止處理尋址」消息。你的服務應該運作良好。 – loentar

回答

1

此消息是由尋址模塊產生,這不是一個錯誤。

您的服務沒有尋址支持,也沒有發送或接收任何尋址特定的頭文件。

關於Axis2/C中WS-Addressing支持的信息是here

+0

我檢查了你的建議,但啓用尋址支持的配置似乎已啓用(我在主線的頂部添加了更多信息)。 – enzo2