2013-02-02 12 views
0

我開始學習如何通過TCL客戶端使用tclws api來調用JAX-WS webservice。我有一個簡單的計算Web服務部署在glassfish服務器上(使用java/jaxws/netbeans編寫),它由我的tcl webservice客戶端成功調用。肥皂信息交換看起來很好。然而,在客戶端調用Web服務的GlassFish後,我獲得額外的標頭,我不知道它是如何返回什麼這個做,爲什麼它顯示我的屏幕上爲什麼從TCL WS客戶端調用java webservice時返回額外的頭信息

 
set xns [dict get [::WS::Utils::GetServiceTypeDef Client CalculatorWS tns1:add] xns] definition {param1 {type xs:int comment {}} param2 {type xs:int comment {}}} xns tns1 
result is :7 

這裏是我的樣品TCL ws客戶端代碼:

package require WS::Client 
::WS::Client::GetAndParseWsdl http://xxxx.xx.xx.com:8099/CalculatorWS/CalculatorWS?wsdl 
set param1 5 
set param2 2 
set inputs [list param1 $param1 param2 $param2] 
set result [ ::WS::Client::DoCall CalculatorWS add $inputs] 
set res [dict get $result return] 
puts "result is :$res" 

任何人都可以請幫助我如何防止這個標題被打印/顯示?我錯過了什麼嗎?

+2

Tclws有一些調試'puts'。我認爲有人應該閱讀代碼並刪除所有代碼。 –

+0

感謝Johannes13準確的指針。 – user981116

回答

1

Johannes13在評論中說了些什麼。

這不會發生在我古老版本的tclws上,但下載最新版本的時候,只剩下一堆put語句用於調試。這很奇怪,因爲tclws使用日誌包,並且在代碼中還有大量的:: log :: log調試語句,這些語句可以更容易地打開/關閉。

要解決您的問題,您可以grep tclws包並刪除這些行,或用:: log :: log debug替換這些puts語句。這不是一個簡單的搜索和替換,因爲tclws確實使用put寫入服務器代碼中的套接字。但是,如果您只使用客戶端,則ClientSide.tcl和Utilities.tcl文件中沒有足夠的實例來手動處理。

+0

謝謝,禁用放入ClientSide.tcl做了這項工作。 – user981116

+0

您可能想要[報告](https://core.tcl.tk/tclws/reportlist)調試消息的存在,這些消息不會通過日誌作爲錯誤。如果您沒有「真實」登錄,只需以匿名方式登錄即可。 –

相關問題