⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 +

📁 php 访问notes示范1 php官方手册上都没有全是自己摸索出来!
💻
📖 第 1 页 / 共 2 页
字号:
InputStreamReader fisr = new InputStreamReader(fin); 

BufferedReader br = new BufferedReader(fisr); 

String ior = br.readLine(); 

fin.close();
 

 

创建session:
我们调用NotesFactory的createSessionWithIOR方法,通过前面获取的IOR,创建一个session对象。

Code
 
Session s = NotesFactory.createSessionWithIOR(ior,

                                "super admin" ,"admin password");
 

 

打开names.nsf:
我们调用session的getDatabase方法,打开指定服务器上的“names.nsf”数据库。

Code
 
final static String DB_NAMES = "names.nsf";

Database dbCache = s.getDatabase(s.getServerName(), 

                                      DB_NAMES, false);
 

 

得到Users View:
我们调用Database的getView方法,打开指定数据库上的“($Users)”视图。

Code
 
View view = dbCache.getView("($Users)");
 

 

遍历Users View:
我们可以遍历指定数据库上的“($Users)”视图,得到每一个用户的Document。

也可以指定一个用户,专门取得他的Mail File,

Code
 
Document docKey = view.getDocumentByKey("zheng yun");

                        if (docKey == null)

                      System.out.println("docKey not found!");

                   else

                     {

                          strMailFile = docKey.getItemValueString("MailFile");

                      if (strMailFile == null) 

                             System.out.println("strMailFile is null!");

                      else

                             System.out.println("strMailFile = " + strMailFile);

                }
 

输出结果就是:mail\zyun.nsf或者mail\zyun。

这样,我们就知道了该用户的邮箱所在的数据库文件的路径了。

 

打开邮箱数据库文件:
知道了一名用户的邮箱文件名称,我们可以再用session的getDatabase方法打开该数据库:

Code
 
Database dbMail = s.getDatabase(s.getServerName(), 

   "mail\\zyun.nsf", false);

if(dbMail == null)

   System.out.println("cannot open database");
 

 

遍历邮箱数据库的所有Document:
根据DocumentCollection dc = dbMail.getAllDocuments();我们获得了该数据库中存储的所有Document的集合,这就是所有的邮件。于是可以遍历了:

Code
 
if (dbMail != null) 

{

       DocumentCollection dc = dbMail.getAllDocuments();

       System.out.println("Mail database : " +

                         dbMail.getTitle() + " is " +

           ((int)(dbMail.getSize()/1024)) + "KB long and has " +

           dc.getCount() + " documents");

           

       String fn = dbMail.getFileName();

    String title = dbMail.getTitle();

    System.out.println(fn.toUpperCase() + " - " + title); 

    

    Document doc = dc.getFirstDocument();

    while (doc != null) {

    System.out.println(

               doc.getItemValueString("Subject"));

    System.out.println("~~~~~~~~~~~~~~~~~~~~\r\n");

    System.out.println("From=" + doc.getItemValueString("From"));

    System.out.println("~~~~~~~~~~~~~~~~~~~~\r\n");

    System.out.println("Body=" + doc.getItemValueString("Body"));

    System.out.println("~~~~~~~~~~~~~~~~~~~~\r\n");

    

    String readFlag = doc.getItemValueString("Readed");

    if(readFlag == null || readFlag!= "1" )

    {

        doc.appendItemValue("Readed ", 

               "1");

        if (doc.save())

            System.out.println("Document created and saved");

            else

            System.out.println("Something went wrong");

    }

    else

        System.out.println("发现已经打上了标记!");

    

    String docNoteID = doc.getNoteID();

    System.out.println("NoteID = " + docNoteID);

    String docNoteURL = doc.getNotesURL();

    System.out.println("NoteURL = " + docNoteURL);

                                

    doc.recycle();

    doc = dc.getNextDocument(); }

 
 

我们通过String readFlag = doc.getItemValueString("Readed");可以获得这个邮件的“Readed”字段(自定义字段)。如果这个字段不存在,说明我们是第一次浏览该封邮件。这样的话,我们通过doc.appendItemValue("Readed ", "1");以及doc.save(),给该封邮件增加这个已浏览标示字段。

 

另外,转《通过JAVA-CORBA访问Domino》中一段很有帮助的话:

如何从lotus.domino.NotesException 中获取错误信息:
在你编写domino的java/corba应用程序时,不可避免的要同异常处理打交道,NotesException当然是每个开发人员都不愿见到的但又不得不经常面对的问题。

如果你在写程序时尽是简单的采用

try{

 ….

}catch(Exception e){

 e.printStackTrace();

}
 

的形式捕捉异常,那么一旦代码抛出异常,你将变得一筹莫展,因为屏幕上不会打印出任何对你提供帮助的信息,这方面的资料更是凤毛翎角, 连IBM的官方文档中都没有丰富的错误信息提示。错误捕捉代码应该这样写:

try{

 ….

}catch(Exception e){

if(ex instanceof lotus.domino.NotesException){

System.out.println( "通过CORBA访问数据库发生错误,错误代码为"

+((lotus.domino.NotesException)ex).id);

}

e. printStackTrace();

}
 

这是屏幕上将打印出错误代码,有了错误代码,我们还要知道错误代码的含义,这就要到IDL文件中去查了。在corba.dll文件中NotesError这个接口定义了全部错误代码(自己要做一下简单的加法才能知道那里面错误代码的具体值),错误代码的变量名正是错误信息。这样你便可以对出现的问题了然于胸了,对你解决突发性事件很有帮助。

 

参考资料:

1:《Java对Domino Objects的访问》,by Robert Perron,Steve

2:《用Java通过DIIOP远程操作Domino服务器》

3:《通过JAVA-CORBA访问Domino》

4:《LotusNotes和Eclipse管理和运行Java程序》


url
http://www-900.ibm.com/cn/support/nav/200402/list-1.shtml
http://www.codestore.net/help/help6_admin.nsf
http://www-12.lotus.com/ldd/doc/domino_notes/6.5m2/help65_designer.nsf
http://www.cnblogs.com/zhengyun_ustc/category/29479.html

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -