要想在Java中通过DIIOP协议访问DOMINO,必需要在DOMINO服务器文档上对DIIOP的访问权限等作出配置,主要包括:
1、安全性》服务器访问权限》谁访问服务器;
2、安全性》编程控制》运行无限制的方法和操作/运行受限制的LotusScript/Java代理;
3、端口》Internet端口》DIIOP》端口和验证等都启用,一般缺省即可;
4、Internet协议》DIIOP配置缺省即可;
Java访问DOMINO的jar包,一般在:x:\Lotus\Domino\Data\domino\java\NCSO.jar下,将其拷贝到eclipse工程的lib下,并配置好构建路径就可以了。
访问DOMINO必然要首先创建DOMINO会话session,可以用NotesFactory.createSession()来创建,不过该方法有很多种,分别针对不同的情况,一般情况下用:
static public Session createSession(String host, String user, String passwd) throws NotesException;
获得session以后所有的操作基本上就是纯DOMINO编程了。
结合spring环境,尝试将对DOMINO的访问封装起来:
1、添加一个简单类DominoDataSource用来封装访问DOMINO的配置信息;
2、参考关系型数据库org.apache.commons.dbcp.BasicDataSource的配置,在spring的applicationContext.xml种配置一个dominoDataSource Bean;
com.company.DominoDataSource即对上面几个类属性的简单实现。
3、参考spring对hibernate或者jdbc的DaoSupport功能开发一个DominoDaoSupport类,封装数据源的设置和session的获取:
public class DominoDaoSupport {
private Log logger = LogFactory.getLog(this.getClass());
private DominoDataSource dataSource = null;
private Session session = null;
public DominoDataSource getDataSource() {
return dataSource;
}
public void setDataSource(DominoDataSource dataSource) {
this.dataSource = dataSource;
try {
session = NotesFactory.createSession(this.dataSource.getServerAddr() + “:” + this.dataSource.getServerPort(),
this.getDataSource().getUserName(),
this.getDataSource().getPassword()
);
} catch (NotesException e) {
e.printStackTrace();
}
}
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}
……
}
这里只是最简单的实现,诸如返回Database的方法也可以封装进去。
4、这样DAO就可以通过extends DominoDaoSupport从而直接获得domino数据源,相应的spring applicationContext.xml配置如下: