如何開發Domino中的WebService

在domino中寫webservice可使用LotusScript,也可使用java,因爲LotusScript API提供的功能多數都是操做domino數據庫中文檔的,在web service中也有一些限制,具體以下:

1. 不要使用原生 LotusScript 類(如 NotesDatabase、NotesDocument 等)做爲參數或返回值。
2. 不要使用變量或貨幣數據類型做爲參數或返回值。
3. 不要使用列表或數組做爲參數或返回值(可使用數組,不過必須使用稍後在本文中所描述的一種特定數據類型)。
4. 不要使用定製類型做爲參數或返回值。java

而java的基礎類庫中則包含的豐富的功能,因此複雜的webservice使用LotusScript編寫不是很方便,咱們就都是使用java來編寫的。web

1. 在domino7.0中web服務是一個新的設計元素,咱們來看下相關設置,先是基本標籤:數據庫

dominows1

1.1.注意 若是修改了WSDL接口則發出警告 選項:選中這個選項,若是隱式的 WSDL 結構更改時,例如,改變類名稱、改變方法或函數的名稱以及添加或刪除類變量,那麼將致使服務顯示一條消息。在生產環境中,這樣的改變可能會引發現有消費您的 Web 服務的軟件客戶機,因爲解析更改了的 Web 服務響應結構產生的錯誤而中止工做。設置這一選項還可以阻止您保存這樣的更改並給您一個將代碼修改回原來狀態的機會。在建立和測試階段不須要設置這一選項。
1.2.在 PortType  域中,指定了這個特定服務的類中包含的可用操做(方法和函數)。通俗的說它就是 Web 服務代碼中帶有用戶可訪問的 public 方法的類。若是在沒有設置這個域以前試圖保存 Web 服務,那麼 Domino Designer 7 客戶機將產生一個警告。編程

2.安全性標籤數組

dominows2

2.1.使用調試信息編譯java代碼的選項,使在控制檯上查看哪一行代碼產生了運行時錯誤成爲可能。web服務建立簡要表 選項容許爲概要分析收集運行時的統計信息。
2.2. 容許公共訪問用戶使用此web服務:該選項使得僅擁有數據庫 ACL 中 「Read Public Documents」 訪問權的用戶可使用該 Web 服務,當不想爲大量用戶授予徹底的 Reader 訪問權限(或更高級別)時,這點頗有用。安全

3.高級標籤dom

dominows3

3.1能夠在兩個編程模型選項中進行選擇:RPC 和 消息。RPC 支持常規方法參數和返回類型;消息限制方法接口爲一個 「消息」 參數和返回類型(有關更多信息,請參閱聯機文檔)。對於 RPC 編程模型,RPC/編碼 SOAP 消息格式是默認的,可是若是有使用其餘格式的特殊要求,那麼能夠修改它。對於 消息 編程模型,SOAP 消息格式是在 Doc/literal 中固定的。(大多數狀況下使用 RPC)。
3.2 端口類型名稱服務元素名稱 和 服務端口名稱 域是在您保存 Web 服務時自動填充。在端口類型名稱域中,指定訪問服務的端口類型名稱。這個指定對應於 WSDL 文檔中 <wsdl:portType> 的 name 屬性。對於每一個服務,Lotus Domino 7 識別一個端口類型。在服務元素名稱域中,指定服務的名稱。默認狀況下,該字段值是 PortType 名稱加上單詞 Service(儘管您可使用任何想用的名稱)。這個指定對應於 WSDL 文檔中 <wsdl:service> 的 name 屬性。在服務端口名稱域中,指定訪問服務的端口。默認狀況下,該字段值是 Domino(儘管您可使用任何想用的名稱)。這個指定對應於 WSDL 文檔中 <wsdl:service> 下面 <wsdl:port> 的 name 屬性。對於每一個服務,Lotus Domino 7 識別一個端口。函數

4.注意:解釋 LotusScript 的 Web 服務引擎把全部公開的函數和變量名更改成大寫字母。例如,當 Lotus Domino 7 自動生成 WSDL 時, GetEmailAddress 更改成 GETEMAILADDRESS。當您爲這樣一個 Web 服務建立消費客戶機時,知道這一更改是重要的。不過java寫的web service不會轉爲大寫的。仍是java的好,都是大寫的看着不舒服。post

5.舉例說明,咱們新建一個WebService設計元素並按上面設置,代碼以下:測試

public class DbInfo
{
    public String dbName;
    public String dbSO;
}

import lotus.domino.*;
import lotus.domino.types.*;

public class DbInfoManager
{
    public DbInfo[] getAllDbInfo()
    {
        DbInfo[] di = new DbInfo[2];
        try
        {……… }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return di;
    }
}

 

而後在Vs2005中添加web Service的wsdl描述,就可使用該web Service提供的類和方法了,很簡單吧。

相關文章
相關標籤/搜索