- 浏览: 202415 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
yixinhu:
你好 能加下你的QQ么 我怎么打出来的exe点击都没反应啊.. ...
java 生成exe 文件 -
chenxiang105:
如果不需要flash 只需要做图片的翻页效果 这个是否也合适类 ...
jQuery插件page peel AD实现动态卷页、翻页或卷角flash广告效果 -
tuoxie007:
幸苦,好文章!
jetspeed门户项目组介绍 -
bobo:
需要考虑不同浏览器的兼容性
通过网页访问本地资源程序 -
tag13346:
说得这么玄,看下
时空趋势理论 --- 超越时空的均线技术(转载 )
一、概述
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 网络访问服务器。远程访问由以下两个部分组成:
1、客户机通过 HTTP 协议获得服务器的初始对象,作为 IOR (Interoperable Object Reference)。
2、客户机通过 IIOP 连接进一步获得其他对象。
Java 通过 HTTP 和 IIOP 的远程访问
要编译使用 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 目录中找到。
这里只介绍远程调用。
二、远程调用
1、Domino服务器设置:
首先进行domino服务器的设置,这是成功的关键步骤。
首先在服务器 Domino Directory(names.nsf)的 Server 文档的配置页面做如下配置
(1)打开Internet协议页签的Http页签,设置"允许HTTP客户浏览数据库:是"
(2)打开安全性页签,设置Java/Com限制。
运行有限制的java/javascript/com:*
运行无限制的java/javascript/com:*
(3)打开端口页签的Internet页签的IIOP页签,设置HTTP的端口号是63148,状态为启用设置验
证选 项的名称和口令:否,匿名:是
(4)打开端口页签的Internet页签的web页签,设置HTTP的端口号是80,状态为启用,设置验证
选项的名称和口令:否,匿名:是
(5)要在服务器上启动 HTTP 和 DIIOP 任务,需要确保这些任务在 Notes.ini 文件
ServerTasks 变量的任务列表中,如果正确配置了 Server 文档该文件,那么这些任务应该包
含在任务列表中。Notes.ini 文件应该包含类似于下面的行:
ServerTasks=Update,Replica,Router,AMgr, AdminP,CalConn,Sched,DIIOP,HTTP,LDAP
从运行的服务器,可以在控制台中输入下列命令来加载任务:
> load http > load diiop
可以在控制台用 tell 命令停止任务:
> tell http quit > tell diiop quit
可以刷新 DIIOP 任务:
> tell diiop refresh
可以重新启动 HTTP 任务:
> tell http restart
(6)获取 IOR。如果使用createSessionWithIOR创建连接。需要将diiop_ior.txt文件从服务
器计算机复制到客户机计算机上。该文件在服务器的安装目录的\Domino\Data\domino\html下。
2、连接domino服务器
在进行远程调用时,createSession 签名的第一个参数是非空字符串。第一个参数通常用来标识 Domino 服务器所在的计算机。例如:
Session s = NotesFactory.createSession("192.168.128.2")
或者
Session s = NotesFactory.createSession("192.168.128.2:63148")
第二个示例指定了端口号,这样就无需在 192.168.128.2上运行 Domino Web 服务器。
要从应用程序或者 servlet 执行远程调用,客户机计算机的类路径中必须包含 NCSO.jar。NCSO.jar 包含 lotus.domino 包、lotus.domino.cso 包、lotus.domino.corba 包以及 ORB 类,ORB 类包含用于远程类的实现代码。对于已安装的 Domino Designer 和 Domino 服务器软件,NCSO.jar 位于 Domino 数据目录下的 domino\java 子目录中。对于没有安装 Domino 软件的计算机,必须从安装该软件的计算机上复制jar文件,并放到classpath。
编码比较简单。远程调用不使用 NotesThread。只需使用主机名称和(可选)端口号进行 createSession 调用即可。
import lotus.domino.*;
public class myClass
{
public static void main(String argv[])
{
try
{
String host = "192.168.128.2";//注意:有时候需要端口号
Session s = NotesFactory.createSession(host);
// Operational code goes here
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
以下是通过iiop访问domino的过程。
在 Domino 服务器上,IOR 是一个名为 diiop_ior.txt 的文件,位于 Domino 数据目录下的 domino\html
子目录中。IOR 是对象的字符串编码,包含对服务器的 CORBA 访问的识别信息。客户机会将字符串 IOR 解码,并用它来建立远程会话。
默认情况下,远程客户机通过 Web 服务器端口(其通常支持 HTTP 请求)来请求服务器 IOR,然后通过 DIIOP 端口进行会话请求。可以分别执行这两个请求。例如:
String ior = NotesFactory.getIOR("192.168.128.2");
// Get IOR using Web server port
Session s = NotesFactory.createSessionWithIOR(ior);
// Create session using DIIOP port
等价于:
Session s = NotesFactory.createSession("192.168.128.2");
在 NotesFactory 调用中,可以在主机名称或 IP 地址后面添加冒号和端口号,来指定用于获取 IOR 的主机端口。如果 Web 服务器没有运行,可以使用这种机制,通过 DIIOP 端口支持 IOR 的 HTTP 请求,例如:
String ior = NotesFactory.getIOR("192.168.128.2:63148");
// Get IOR using DIIOP port
Session s = NotesFactory.createSessionWithIOR(ior);
// Create session using DIIOP port
然而,两步式编码顺序并不是必需的。可以将其简化为:
Session s = NotesFactory.createSession("192.168.128.2:63148");
注意:指定 DIIOP 端口来获取 IOR 的能力是 Notes/Domino 6 的新功能。现在就可以使用远程调用,无需允许对 Web 服务器的匿名访问,甚至无需启动 Web 服务器。
也可以通过其他方法获取 IOR,然后使用 createSessionWithIOR。例如,可以将 diiop_ior.txt 文件从服务器计算机复制到客户机计算机上。如果客户机上包含对将使用的服务器有效的 diiop_ior.txt 文件。
以下程序演示了如何访问domino库,如何查找文档,如何取得数据,如何下载附件,如何插入数据,如何上传附件。
-----------------------------------------------------------------------------------
测试环境:domino5.0.7
Domino库名:javatest.nsf
Form名:form1
域:
文本域:name1
时间域:name2
整型域:name3
Rtf域:name4
列表域:name5
多值域:name6
-----------------------------------------------------------------------------
package demo;
import lotus.domino.*;
import java.io.*;
import java.util.*;
public class JavaAccessDomino {
public static void main(String argv[]) {
try {
FileInputStream fin = new FileInputStream(
"E:/JBWork/DominoApp/lib/diiop_ior.txt");
InputStreamReader fisr = new InputStreamReader(fin);
BufferedReader br = new BufferedReader(fisr);
String ior = br.readLine();
fin.close();
//通过diiop_ior取得session,需要把diiop_ior.txt放到本地
Session s = NotesFactory.createSessionWithIOR(ior);
//也可以通过如下方法取得session,不需要把diiop_ior.txt放到本地,但必须启用domino Web server
//ior = NotesFactory.getIOR("192.168.9.32"); // Get IOR using Web server port
//s = NotesFactory.createSessionWithIOR(ior); // Create session using DIIOP port
//取得库对象
Database db = s.getDatabase(s.getServerName(), "javatest.nsf");
JavaAccessDomino obj = new JavaAccessDomino();
obj.selectDoc(db);
obj.insertDoc(db);
db.recycle();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 遍历文档
* @param db Database
*/
public void selectDoc(Database db) {
DocumentCollection docList = null;
try {
docList = db.getAllDocuments();
if (docList != null) {
System.out.println("database : " + db.getTitle() + " is " +
((int) (db.getSize() / 1024)) +
"KB long and has " + docList.getCount() +
" documents");
Document doc = docList.getFirstDocument();
while (doc != null) {
// System.out.println("=============name1="+doc.getItemValueString("name1"));
Vector items = doc.getItems();
for (int j = 0; j < items.size(); j++) {
Item item = (Item) items.elementAt(j);
if (item != null && item.getType() == 1280) { //表示是文本
System.out.println("\t" + item.getName() +
" = \"" +
item.getValueString() + "\"");
} else if (item != null && item.getType() == 1024) { //表示是时间
System.out.println("\t" + item.getName() +
" = \"" +
item.getDateTimeValue() + "\"");
} else if (item != null && item.getType() == 768) { //表示是整型
System.out.println("\t" + item.getName() +
" = \"" +
item.getValueInteger() + "\"");
} else if (item != null && item.getType() == 1) { //表示是rtf域
Item itmWjbt = doc.getFirstItem("$FILE");
if (itmWjbt != null) {
EmbeddedObject eo = doc.getAttachment(itmWjbt.
getValueString());
FileOutputStream out = new FileOutputStream(
"C:/" +
itmWjbt.
getValueString());
InputStream in = eo.getInputStream();
BufferedInputStream bufferedInputStream = new
BufferedInputStream(in);
BufferedOutputStream bufferedOutputStream = new
BufferedOutputStream(out);
byte[] data = new byte[1];
while (bufferedInputStream.read(data) != -1) {
bufferedOutputStream.write(data);
}
//将缓冲区中的数据全部写出
bufferedOutputStream.flush();
//关闭流
bufferedInputStream.close();
bufferedOutputStream.close();
}
}
}
System.out.println("---------------------");
doc.recycle();
doc = docList.getNextDocument();
}
}
} catch (NotesException ex) {
ex.printStackTrace();
} catch (Exception ex1) {ex1.printStackTrace();}
}
/**
* 插入一个文档
* @param db Database
*/
public void insertDoc(Database db) {
//插入一条Document//////////////////
Document newDoc = null;
try {
newDoc = db.createDocument();
newDoc.appendItemValue("Form", "form1"); //指定表单
newDoc.appendItemValue("name1", "hello");
newDoc.appendItemValue("name2", "2008-04-11");
newDoc.appendItemValue("name3", "100");
RichTextItem rti = (RichTextItem) newDoc.createRichTextItem(
"name4");
String attachFilePath = "D:/测试.doc";
rti.embedObject(EmbeddedObject.EMBED_ATTACHMENT, null,
attachFilePath, attachFilePath); // 添加附件
if (newDoc.save()) {
System.out.println("文档创建并保存成功");
} else {
System.out.println("文档创建并保存失败");
}
} catch (NotesException ex) {
ex.printStackTrace();
}
///////////////////////////////////////
}
}
以上程序在domino5.0.7下测试通过,如果domino的版本不一样,可能会有小的问题,关键是看能不能取得session. 如果运行通过不了,请仔细查看domino服务器的设置。
三、名词解析:
1、DIIOP:
IIOP,是Internet Inter-ORB Protocol,一种传输层协议。它用于CORBA
2.0及兼容平台上。IIOP协议是要建立以下几个部分:一个IIOP到HTTP的网关,使用这个网关可以让CORBA客户访问WWW资源;一个HTTP
到IIOP的网关,通过这个网关可以访问CORBA资源;一个为IIOP和HTTP提供资源的服务器,一个能够将IIOP作为可识别协议的浏览器。
其中ORB呢,Object Request
Broker(请求对象代理),一个中间件。它可以建立对象之间的client/server关系。通过ORB,一个client可以透明的引用同一台机
器上或网络上的一个server对象的方法。ORB解释该调用并负责查找一个实现该请求的对象,找到后,把参数传给该对象,调用它的方法,最后返回结果。
那么,DIIOP就是Domino IIOP了,什么意思呢?就是一个服务器端的任务,通过Domino ORB,来使得Domino Server与Java applets交互,双方使用IIOP来交互和交换对象数据。
2、IOR:
IOR,Interoperable Object Reference。
实际上,就是Domino服务器上的一个文件diiop_ior.txt,它在c:\lotus\domino\data\domino\html文件夹下。
客户端java程序向domino服务器发出CORBA请求,服务器通过HTTP协议返回给客户端IOR字符串,之后客户端通过IIOP协议与服务器进行通讯。
从这一点来看,IOR 实际上是一个对象的字符串编码,包含对Domino服务器的 CORBA 访问的识别信息。客户端java程序将字符串 IOR 解码,就可以用它来寻找到对应的主机并建立远程会话了。
3、Domino对象
Domino对象类的结构基于包容模型,包容模型定义了对象的范围。容器对象通常被用来访问它所包含的子对象。
关闭一个容器对象意味着其包含的全部子对象也将被关闭。例如,你建立了一个Database对象,使用它创建了一个Document对象,如果关闭了
Database对象,Document
对象也会随之关闭。如果容器对象超时,它将会被自动关闭,其包含的对象也将被自动关闭。因此你应该在容器对象超时或关闭前保存你的任何改变。
4、Domino Database:
Domino中的Database,指的是在一个名字下存储的,一个集合,包含了Document以及相应的form、view和folder。Java中有lotus.domino.Database。
我们通常可以通过session对象的getDatabase方法,或者DbDirectory对象的getFirstDatabase/ getNextDatabase方法,来获取Database对象的实例。
5、Domino View:
Database集合中有着各种View。Java中有lotus.domino.View。可以通过Database对象的getView方法,来获取View对象的实例。
6、Domino Document:
Domino中的Document,指的是在一个Database的一个条目,包含了fileds,text,numbers,graphics等等。Java中有lotus.domino.Document。
可以通过Database对象的getView方法,来获取View对象的实例。
发表评论
-
配置 weblogic JMS 连接
2011-05-11 19:25 4639jms 的优点 它可以把不影响用户执行结果又比较耗时的任务 ... -
应用服务器设为服务的方法
2011-01-05 11:03 9641.将Tomcat 5以上版本设置成服务 (假设我们缺省的T ... -
java 生成exe 文件
2010-03-15 11:25 6899对于作Java桌面应 ... -
linux 下jdk ,jboss的安装和jboss的自启动
2009-09-15 13:09 2538A。 linux下 JDK的安装 ... -
如何用java远程访问Domino邮箱数据2
2009-08-14 16:54 1571遍历邮箱数据库的所有 Document : ... -
如何用java远程访问Domino邮箱数据1
2009-08-14 16:16 3110应用场景 我们需 ... -
模板:velocity和freemarker的比较[转
2009-08-10 11:02 1320关键字: 模板技术 /** *作者:张荣华 ... -
实战Concurrent
2009-04-23 12:41 858DigitalSonic 写道 编写 ... -
httpclient 模拟登陆网站 获取网站内容程序
2009-03-22 08:24 3300package org.apache.http.example ... -
JAVA-用HttpClient来模拟浏览器GET,POST2
2009-03-20 00:23 29245. 提交XML格式参数提交XML格式的参数很简单,仅仅是一 ... -
JAVA-用HttpClient来模拟浏览器GET,POST1
2009-03-20 00:21 1185一般的情况下我们都是使用IE或者Navigator浏览器来访问 ...
相关推荐
Java 访问 Domino 的编程指南 Java 访问 Domino 的编程指南是指在 Java 语言中如何访问和操作 Domino 对象的编程指南。Domino 是一种商业软件,它提供了强大的信息管理和collaboration 功能。Java 是一种广泛使用的...
java访问domino,通过http访问Domino,java快速访问Domino,java集成lotus domino 完全提供源码 界面请查阅 https://blog.csdn.net/weijia3624/article/details/113108704
Java远程访问Domino邮箱数据是通过使用Lotus Domino Java API(Lotus Domino JNA或Lotus Domino Access for Java)来实现的。这个过程涉及到多个步骤和技术,包括理解Lotus Domino的架构、设置Java环境以及使用特定...
- 压缩包中的“Java-CORBA访问远程Domino服务器.doc”可能涵盖了使用Common Object Request Broker Architecture (CORBA)来访问远程Domino服务器的方法。CORBA提供了一种跨平台的分布式对象模型,允许不同系统间的...
访问 Domino 对象使用 Java 本文主要介绍了使用 Java ...使用 Java 访问 Domino 对象需要了解 lotus.domino 包的使用和 NotesFactory 类的方法,了解本地调用和远程调用的区别,并且使用 NotesThread 类来管理线程。
Java 访问 Domino 服务器详解 在《Java 访问 Domino 服务器》文档中,我们将学习如何使用 Java 语言访问 Domino 服务器。Domino 服务器是一个功能强大的电子邮件服务器,它提供了许多有用的功能,如全文检索、安全...
为了确保邮件能够顺利发送,需要进行一系列配置及调试工作,包括开启Domino服务器的DIIOP服务、验证网络连接性、配置DIIOP设置以及正确建立Java与Domino之间的会话等。 #### 关键步骤详解 ##### 1. 开启Domino...
Java访问Domino服务器主要涉及到的是使用Java编程与IBM Lotus Domino服务器进行交互的技术。Lotus Domino是一种协同软件平台,常用于电子邮件、日历管理、任务分配等。本文将深入讲解如何利用Java来操作Domino服务器...
3. **连接配置**:"Java访问Domino必需配置的服务器设置.doc"文档可能会详述如何设置服务器端的连接参数,如服务器名称、数据库路径、用户认证信息等。这些信息会用于建立Java的`java.sql.Connection`对象。 4. **...
Java访问Domino服务器主要涉及到Java编程与Lotus Domino的集成技术,这在企业级应用中常见于自动化处理、数据交互和邮件系统等场景。Lotus Domino是一款强大的协作平台,提供了丰富的API供开发者进行定制化开发。 ...
这是一个java通过domino的diiop连接domino的类。希望对大家有用
通过这两部分的学习,开发者不仅可以掌握Java访问Domino的基本技术,还能了解到如何构建高效、安全的Domino Java应用程序。这些知识对于任何希望利用Java进行Domino开发的人员来说都是宝贵的资源。
### 使用Java访问Domino对象详解 #### 一、概述 本文档主要介绍如何利用Java语言访问Domino对象,包括数据库、视图、文档等。这些操作对于开发基于Lotus Domino/Notes的应用程序至关重要。文中所述内容主要适用于...
此外,由于ToolKit通过调用Notes客户端来操作Domino数据库,因此在开发环境的机器上必须安装Notes客户端,且该客户端应具有访问目标Domino服务器的权限。 #### 三、Domino数据库结构 在本例中,我们将操作名为`FW...
Notes.jar lotus.domino.* java连接domino 没有分数的可以到 http://www.ibm.com/developerworks/apps/download/index.jsp?contentid=50943&filename=DominoJSPArticle.zip&method=http&locale=worldwide
### Java操作Domino知识点概述 #### 一、Java与Domino集成基础 1. **环境配置**: - **CLASSPATH设置**:确保在开发环境中正确设置了CLASSPATH,包括指向Domino安装目录下的`Notes.jar`及`NCSO.jar`等必要的库...
在Java编程中,连接到IBM Lotus Domino(也称为Lotes)邮件服务器并读取邮件内容和附件是一项常见的任务。Lotus Domino是IBM提供的一款企业级的协作软件,它集成了电子邮件、日历、任务和文档管理等功能。这篇教程将...
要使用Java访问Domino对象,首先需要在环境中配置JDK和IDE,例如Eclipse或IntelliJ IDEA。然后,引入Lotus Domino的JAR库,这些库提供了访问Domino对象的API。常见的访问协议有IIOP(Internet Inter-ORB Protocol)...
功能:打印视图显示的文档 dominoserver : 服务器名或IP user :登录名 ...NsfFilepath :NSF库在服务器的路径 viewname :NSF库中的视图 ... java -jar dominocnn.jar dominoserver user password NsfFilepath viewname