java 對 Domino Objects 的訪問是通過進階包 lotus.domino 進行的。根據運行時環境,這個包中的介面是在其他兩個包中的一個包中實現的:
lotus.domino.local 提供了從同一電腦上的 Notes/Domino 軟體進行調用。
lotus.domino.cso 提供了從通過遠端連線訪問的 Domino 伺服器進行調用。
對於本地訪問,Java 程式運行在安裝有 Notes 客戶機或者 Domino 伺服器的電腦上。本地類由 JNI(Java Native Interface)構建來,用於訪問與 JVM(Java Virtual Machine)相同的進程中的 Notes/Domino 二進位檔案。對於遠端存取,Java 程式使用 CORBA(Common Object Request Broker Architecture)請求 Domino 伺服器所提供的服務。遠程類使用 CORBA 通過 TCP/ip 網路存取伺服器。遠端存取由以下兩個部分組成:
客戶機通過 HTTP 協議獲得伺服器的初始對象,作為 IOR (InterOperable Object Reference)。
客戶機通過 IIOP 串連進一步獲得其他對象。
在 lotus.domino 中,NotesFactory 類提供了 createsession 和其他方法,以便在 Java 應用程式和 servlet 中啟用對 Domino Objects 的訪問。非凡的調用方式確定了訪問是本地還是遠端。要編譯使用 lotus.domino 包的 Java 程式,類路徑必須包含 Notes.jar(本地)或者 NCSO.jar(遠程)。例如:
set classpath=%classpath%;c:\lotus\domino\Notes.jar 或者 set classpath=%classpath%;c:\lotus\domino\data\domino\java\NCSO.jar 其中 Notes.jar 可以在任何 Notes/Domino 安裝的程式目錄中找到。NCSO.jar 可以在 Domino Designer 或 Domino 伺服器資料目錄下的 domino\java 目錄中找到。
本地調用
createSession 的調用沒有參數,第一個參數為 null 或者第一個參數為空白字串都表示本地調用。下列代碼是等價的:
Session s = NotesFactory.createSession()
Session s = NotesFactory.createSession((String)null)
Session s = NotesFactory.createSession("")
將 null 轉換成 String,以避免過載衝突。要從應用程式和 servlet 中實現本地調用,路徑中必須包含 Notes/Domino 的程式目錄,類路徑中必須包含 Notes/Domino 程式目錄中的 Notes.jar。例如:
set path := %path%;c:\lotus\domino
set classpath := %classpath%;c:\lotus\domino\Notes.jar
Notes.jar 中包含 lotus.domino 和 lotus.domino.loca 包。本地調用需要用 NotesThread 類治理線程。NotesThread 類擴充了 java.lang.Thread,包含專門針對 Domino 的初始化和終止代碼。您有以下三種選擇:
通過繼續來執行線程。
通過 Runnable 介面來執行線程。
通過靜態方法來執行線程。
通過繼續來執行線程
要通過繼續來執行線程,需要擴充 NotesThread,而不是 Thread,並且需要包含 runNotes 方法,而不是 run 方法。NotesThread 線程可以和任何其他線程一樣通過 start 方法來啟動。這種方式比靜態方法(稍後討論)輕易使用,且不易出錯。
import lotus.domino.*;
public class myClass extends NotesThread
{
public static void main(String argv[])
{
myClass t = new myClass();
t.start();
}
public void runNotes() // entry point for Notes thread
{
try
{
Session s = NotesFactory.createSession();
// Operational code goes here
}
catch (Exception e)
{
e.PRintStackTrace();
}
}
}
-