java可以访问操作lotus domino数据库吗?

huangshuailei 2010-06-23

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数据源连接失败");

}

相关推荐

LetonLIU / 0评论 2020-05-29