怎樣實現(xiàn)Java遠(yuǎn)程訪問Domino數(shù)據(jù)庫
Java遠(yuǎn)程訪問Domino數(shù)據(jù)庫推薦采用CORBA實現(xiàn),但配置非常關(guān)鍵,筆者在工作中也遇到了這個問題,在查閱資料的過程中發(fā)現(xiàn),很多文章明顯存在一些誤區(qū)或者說沒有寫清楚的地方,現(xiàn)將筆者的實踐經(jīng)驗總結(jié)出來,和大家分享。Domino服務(wù)器版本是5.0.9。
基本步驟:
1.修改Domino服務(wù)器安全性配置,允許你的用戶運行Java/CORBA。具體操作是: 打開Lotus Domino Administrator,進(jìn)入配置,打開當(dāng)前服務(wù)器文檔,選擇“安全性”選項卡,在右下角“Java/COM 誰可以-”欄中,分別在“運行有限制的Java/Javascript/COM”和“運行無限制的Java/Javascript/COM”兩項中填上你的連接用戶名或用戶所在組。
2.給你的用戶加上Internet地址和口令。如果你的用戶沒有Internet地址和口令,那么只有Domino的管理用戶才可以連接,其他普通用戶是連不上的,而且也沒有具體的提示。筆者曾在這個地方浪費了一天的時間。
注冊個人時,點擊高級選項,填寫Internet網(wǎng)絡(luò)域(Internet地址會自動生成,如myname@workgroup),同時選中“設(shè)置Internet口令”,以后將用這個Internet口令來建立會話。如果是已經(jīng)注冊的用戶,則可以通過編輯注冊信息來修改。
3.打開notes.ini文件,確認(rèn)加載了DIIOP服務(wù)。檢查notes.ini文件中的類似這樣一行:
- ServerTasks=Update,Replica,Router,AMgr, AdminP,CalConn,Sched,DIIOP,HTTP,LDAP
4.還有其他配置,如用戶對Server的訪問權(quán)限、DIIOP端口設(shè)置等,這些啟用Domino服務(wù)器的缺省配置即可。配置完了需要重啟Domino服務(wù)器。
5.將Domino服務(wù)器主目錄下的data/domino/Java/NSCO.jar文件拷入Java工作環(huán)境,并在工程的構(gòu)建路徑中加入,或者在classpath環(huán)境變量中加入。
6.將Domino服務(wù)器主目錄下的data/domino/html/diiop_ior.txt(CORBA訪問的識別信息)拷入你的Java工作環(huán)境,或者開放Domino服務(wù)器的HTTP服務(wù)。
7.現(xiàn)在可以編寫連接程序進(jìn)行測試了:
- import lotus.domino.*;
- import Java.io.*;
- class Test {
- public static void main(String args[]) {
- Session session;
- String ior;
- String dominoURL="11.68.81.27"; //DOMINO服務(wù)器的IP地址
- String username="username"; //用戶ID
- String password="password"; //用戶的internet口令
- try {
- //如果已將ior文件拷到本地,則直接讀ior文件
- try {
- BufferedReader iorin=
- new BufferedReader(new FileReader("diiop_ior.txt"));
- ior=iorin.readLine();
- iorin.close();
- } catch (IOException e) {
- ior=null;
- }
- //如果讀不到diiop_ior.txt文件,則需要通過網(wǎng)絡(luò)從服務(wù)器下載這個文件
- //這需要domino服務(wù)器開放http服務(wù)
- if(ior==null) ior =NotesFactory.getIOR(dominoURL);//下載IOR
- session = NotesFactory.createSessionWithIOR(ior,username,password);
- System.out.println(session); //如果這一行打印出來了,表示連接成功
- } catch (NotesException ex) {
- System.out.println(ex.getClass().getName()+":"+ex.id);
- }
- }}
需要注意的是:
1.必須開放Domino服務(wù)器的HTTP服務(wù)。
甚至連Lotus domino designer的幫助文檔都是這么說,其實不然,如果你直接將DIIOP_IOR.txt文件從Domino服務(wù)器拷貝過來了,HTTP服務(wù)就不必要啟動。啟動HTTP服務(wù)的惟一目的就是下載這個文件。
2.必須要在Domino服務(wù)器配置中允許 HTTP 客戶瀏覽數(shù)據(jù)庫。
這個是完全不必要的,上面已經(jīng)講了,開放HTTP服務(wù)僅僅是下載diiop_ior.txt文件,并不需要瀏覽數(shù)據(jù)庫。
3.有些文章稱,確保設(shè)計者的機(jī)器上Notes.ini文件中含有以下行: ALLOW_NOTES_PACKAGE_APPLETS=1。其實,這個是不必要的。
4. 有些文章提到要根據(jù)IDL文件創(chuàng)建自己的CORBA庫,這樣也沒必要。對于遠(yuǎn)程訪問,只需將data/domino/Java/NSCO.jar拷貝過去; 對于本地訪問,只需將Domino目錄下的notes.jar文件加到classpath中即可。
【編輯推薦】