用 Java 访问 Domino 的对象(一)

使用 Java 可以访问 Domino 中的对象,如数据库、视图、文档等。本文简述了用 Java 访问 Domino 对象的基本编程方法。本文中的内容主要是根据 Lotus Domino/Notes 6 编写的,使用 R5 时会略有不同。

Java 对 Domino 对象的访问是通过调用 lotus.domino 包来进行的。在运行环境中,lotus.domino 包中的接口是通过两个包来实现的:

  • lotus.domino.local - 支持从Notes/Domino所在的计算机上进行的本地调用
  • lotus.domino.cso - 支持对 Domino 服务器进行远程连接

对于本地连接,Java 程序将在Notes客户端或Domino服务器所在的计算机运行,使用JNI 对Notes/Domino的代码进行访问。

对于远程连接,Java 程序通过 CORBA 访问 Domino 所提供的服务。远程访问包括两个过程:

  • 客户端通过 HTTP 协议获得服务器的初始对象,作为 IOR (Interoperable Object Reference)
  • 客户端通过 IIOP 协议进一步获得服务器上的其他对象。

在 lotus.domino 中,NotesFactory 类提供了 createSession 以及其他方法,可以用来开始 Java 应用程序或 servlet 对 Domino 对象的访问。不同的调用方式决定了访问是本地的还是远程的。

要使用 lotus.domino 包来编译 Java 程序,类路径(classpath)中必须包含 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服务器或Domino Designer的数据目录下,domino/java 子目录中。

本地调用

使用 createSession 时,没有参数、第一个参数为 null、或第一个参数为空字符串都表示本地调用。以下代码是等价的:

Session s = NotesFactory.createSession() Session s = NotesFactory.createSession((String)null) Session s = NotesFactory.createSession("")

要从应用程序和 servlet 中执行本地调用,路径(path)中必须包含 Notes/Domino 的程序目录,类路径(classpath)中必须包含 Notes.jar。例如,当 Domino 安装在"c:/lotus/domino"中时:

set path := %path%;c:/lotus/domino
set classpath := %classpath%;c:/lotus/domino/Notes.jar
Notes.jar中包含 lotus.domino 和 lotus.domino.local 包。

本地调用要求使用 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();
       }
   }
}

通过 Runnable 接口来执行线程

要通过 Runnable 接口来执行线程,需要实现 Runnable 并包含 run 方法,这和其他使用线程的类完全一样。当您需要扩展其他类,不能扩展 NotesThread 类时可以使用这种方式。

import lotus.domino.*;
public class myClass implements Runnable
{
   public static void main(String argv[])
   {
       myClass t = new myClass();
       NotesThread nt = new NotesThread((Runnable)t);
       nt.start();
   }
   public void run() // entry point for thread
   {
       try
       {
           Session s = NotesFactory.createSession();
           // Operational code goes here
        }
       catch (Exception e)
       {
           e.printStackTrace();
       }
   }
}


(来源IBM官方网站)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值