java可以访问操作lotus domino数据库吗?
jdbc方式应该不能在jsp或javabean中使用吧,因为它会弹出密码输入框让你输入密码的;使用corba应该是可以的;第一种方式就不知道了,因为它要依靠客户端的。
第一种方式的例程:
importlotus.domino.*;
importjava.net.*;
importjava.io.*;
importjava.util.*;
publicclassConnectToDomino
{
Sessionsession=null;
StringstrServer=null;
StringstrUserName=null;
StringstrPassWord=null;
//构造函数
publicConnectToDomino(StringServer,StringUser,StringPass){
strServer=Server;
strUserName=User;
strPassWord=Pass;
setConnection();
}
//建立连接
publicbooleansetConnection(){
if(strServer==null||strUserName==null||strPassWord==null)returnfalse;
try{
System.out.println("用户登录:"+strServer+"\t"+strUserName);
StringIOR=GetIOR();
if(IOR!="")
System.out.println("成功取得IOR,开始创建session.....");
else
System.out.println("获取IOR失败!");
//session=NotesFactory.createSession(strServer,strUserName,strPassWord);
//session=NotesFactory.createSession(strServer,"","");
//session=NotesFactory.createSessionWithIOR(IOR);//匿名
session=NotesFactory.createSessionWithIOR(IOR,strUserName,strPassWord);//用户身份
System.out.println("成功登陆,登录信息:\n服务器名称:"+session.getServerName()+"\n登录用户名:"+
session.getUserName()+"\n");
returntrue;
}
catch(Exceptione)
{
e.printStackTrace();
returnfalse;
}
}
//获取IOR
publicStringGetIOR(){
InputStreambin;
StringResult="";
intcharacter;
try{
URLurl=newURL("http://"+strServer+"/diiop_ior.txt");
bin=url.openStream();
while((character=bin.read())>0){
Result+=(char)character;
}
}
catch(Exceptione){
e.printStackTrace();
}
returnResult;
}
//检索文档
publicvoidSearch(StringSearchDB,StringSearchFormular){
try{
Databasedb=session.getDatabase(session.getServerName(),SearchDB);
System.out.println("Searching:"+SearchFormular+"...");
DocumentCollectiondc=db.search(SearchFormular);
DocumentdocResult=dc.getFirstDocument();
if(docResult==null)return;
inti;
intj=0;
while(docResult!=null){
System.out.println(docResult.getItemValueString("FullName"));
docResult=dc.getNextDocument();
}
}catch(Exceptione)
{
e.printStackTrace();
}
}
//创建文档
publicbooleanCreateNewDoc(StringDBName,StringformName,String[]FieldList,String[]ValueList,StringAgentName){
try{
Databasedb=session.getDatabase(session.getServerName(),DBName);
Documentdoc=db.createDocument();
Itemitem=doc.appendItemValue("form",formName);
doc.computeWithForm(true,false);
inti;
for(i=0;iitem=doc.replaceItemValue(FieldList[i],ValueList[i]);
}
doc.save();
if(AgentName!=null||AgentName!=""){
Agentagent=db.getAgent(AgentName);
if(agent!=null){
agent.run(doc.getNoteID());
}
}
returntrue;
}catch(Exceptione)
{
e.printStackTrace();
returnfalse;
}
}
//关闭
publicvoidclose(){
try{
session.recycle();
session=null;
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}
以下是与domino建立链接的相关代码
importlotus.domino.*;
try{
System.out.println("开始Notes数据源进行连接....");
Sessions=NotesFactory.createSession(notesHost,userName,userPassword);
System.out.println("与Notes数据源成功连接,现正在查找Notes登录数据库oak.nsf");
//定义全局性变量
Databasedb=null;
Databasenamesdb=null;
Viewview=null;
Documentdoc=null;
Stringnamesuser="";
db=s.getDatabase(s.getServerName(),SysInf.Notes_dir+"/oak.nsf");
ACLacl=db.getACL();
ACLEntryentry=acl.getFirstEntry();
namesdb=s.getDatabase(s.getServerName(),"names.nsf");
view=namesdb.getView("Groups");
do
{
//具体分析每一个对象
switch(entry.getUserType()){
caseACLEntry.TYPE_MIXED_GROUP:
//混合组
System.out.println("混合组"+entry.getName());break;
caseACLEntry.TYPE_PERSON:
//个人
namesuser=entry.getName().substring(3,entry.getName().indexOf("/"));
addnotesuser(namesuser);
System.out.println("个人:"+namesuser);
break;
caseACLEntry.TYPE_PERSON_GROUP:
//个人群组
System.out.println("个人群组:"+entry.getName());
//names.nsf中视图Groups文档Members域有每一个用户
doc=view.getFirstDocument();
while(doc!=null&&!doc.getFirstItem("ListName").getText().equals(entry.getName()))
{
doc=view.getNextDocument(doc);
}
if(doc!=null){
Enumerationvalues=doc.getFirstItem("Members").getValues().elements();
while(values.hasMoreElements()){
//将CN=administrator/O=Autosoft只取它的名字administrator
namesuser=values.nextElement().toString();
namesuser=namesuser.substring(3,namesuser.indexOf("/"));
addnotesuser(namesuser);
}
}
break;
caseACLEntry.TYPE_SERVER:
//服务器
System.out.println("服务器"+entry.getName());break;
caseACLEntry.TYPE_SERVER_GROUP:
//服务器组
System.out.println("服务器组"+entry.getName());break;
caseACLEntry.TYPE_UNSPECIFIED:
//没有指定
if(entry.getName().indexOf("/")>1)
{
namesuser=entry.getName().substring(3,entry.getName().indexOf("/"));
addnotesuser(namesuser);
System.out.println("找到一个没有指定类型的用户"+entry.getName().substring(3,entry.getName().indexOf("/")));
break;
}
else
{
System.out.println("没有指定"+entry.getName());
break;
}
}
}while((entry=acl.getNextEntry(entry))!=null);
System.out.println("用户导入完成");
}
catch(Exceptionex)
{
ex.printStackTrace();
System.out.println("与Notes数据源连接失败");
}