2012-04-30 59 views
0

我剛剛開始使用Lotus Notes的Web服務。我希望能夠做的是創建一個生成序列號的Web服務。生成數字的代碼是基於我們在數據庫中使用了一段時間的現有代碼(只是直接的蓮花腳本,沒有Web服務)。基本上有一個存儲下一個號碼的文件,下一個號碼被返回並更新爲下一次呼叫保存衝突被檢測到,並且如果在保存號碼時出現問題,則再次嘗試號碼。Web服務是按順序還是並行處理?

我想我可能會使用網絡服務來生成號碼。那麼Web服務是按順序還是並行處理?因爲如果他們是連續的,那麼我就不需要處理兩個人試圖同時保存這個號碼。

+0

這將取決於平臺。什麼是Web服務運行? Apache的?使用Java?什麼框架?通常,Web服務調用可以並行處理。 –

回答

2

Web服務是一種讓兩個系統彼此通信的方式,它們不會有共同的語言。

例如連接到.Net服務器的LotusScript代理。

在Domino上創建Web服務提供者(服務器)時,您可以使用LotusScript或Java對其進行編碼。然後,服務器爲消費者(客戶端)提供一個WSDL文件,以編寫與該Web服務交談所需的代碼。

本教程應該更好地解釋它給你:

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Creating_your_first_Web_Service_provider_and_consumer_in_LotusScript_and_Java.

現在作爲多米諾。運行Web服務以便從服務器請求它們。但是沒有控制權要說「Webservice X完成之前不要啓動」。

您也可以將此代碼編碼到應用程序中,但運行其他用戶的內存/性能問題死鎖的嚴重風險,除非您反對。

也可以將Domino服務器設置爲不能並行運行Web服務/代理。但是你也冒同樣的風險。

如果它是一個唯一的ID,那麼你可以通過從Web服務創建的文檔的UNID。或者你可以通過評估來使用@UNIQUE,但兩者都只返回文本。

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.designer.domino.main.doc/H_UNIQUE.html

+0

謝謝西蒙。總之,我仍然需要檢查兩個人沒有同時更新下一個號碼文件嗎? –

+1

是的,這將與Web服務組件分開。以下wiki文章將創建順序編號。 http://www-10.lotus.com/ldd/ddwiki.nsf/dx/sequential-numbering.htm –

+0

只是一個想法,文件鎖定工作的Domino Web服務?當R6出現時,我並沒有留下太深的印象,但它可能已經改進了,因爲R8.5 – booyaa

0

是Web服務將在parrallel運行。但是既然你寫過你的代碼處理保存衝突,你不應該有問題。
在2個用戶的標準筆記調用中:第一次獲取文檔,第二次獲取文檔並保存(快速兩次),然後首先獲得保存衝突。 總而言之,它是平行的,但它不是問題。

0

我會認爲他們默認情況下會按順序運行,因爲異步Web代理處於關閉狀態,除非您打開它。因此,儘管如果您只通過Web服務分配數字並且您沒有更改異步設置,那麼按順序執行「安全」操作是一種很好的設計模式,但您仍然可以使用

1

從Lotus Designer文檔:

要在服務器上啓用併發Web服務,必須在該服務器上啓用併發Web代理。打開您要編輯的服務器文檔。單擊Internet協議 - Domino Web引擎選項卡。同時啓用運行Web代理。

併發Web服務調用的最大數量由「最大併發代理」設置決定。來自Lotus Administration文檔:

最大併發代理數指定允許併發運行的代理程序數。有效值爲1到10.默認值爲白天1和夜間2。啓用更多併發代理可以減輕負載過重的代理管理器,但也會減少可用於運行其他服務器任務的資源。

的Lotus Notes Domino的版本8.5.x

+0

如果在Web上調用WS,則參數爲** NOT **最大併發代理**但BUT ** Internel協議/ HTTP基礎知識中的「Number active threads」 –

0

有避免同步考慮一個簡單的解決方案。

您應該使用@Unique生成一個臨時編號,然後使用排程代理按文檔創建順序分配連續編號,並使用正確構成的視圖僅選擇未處理的文檔。如果您不關心創建文檔的順序,只關心所有數字都是唯一的,則視圖不是必需的,您可以在未處理的文檔上觸發代理。

臨時號碼可以暫時用作參考,直到分配了正確的序號。

當計劃的代理運行時,它應該向作者確認正確的參考號。

0

或者,您可以導出到DXL並獲取標籤的sequence =屬性。不過,這隻適用於訪問數據庫的單個實例。而DXL導出/ XML導入是一個巨大的開銷。

不幸的是,我看不到一種方法可以輕鬆地從LotusScript NotesDocument獲取筆記的序列號。如果您有一個有效的支持合同,您可以打開一份問題管理報告來獲取軟件增強請求(「APAR」,用IBM的話來說,儘管我不知道它的縮寫是什麼)。

祝你好運!

相關問題