用Java通过DIIOP远程操作Domino服务器

<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; /* 336x280, 创建于 07-11-21 */ google_ad_slot = "0989131976"; google_ad_width = 336; google_ad_height = 280; // </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 最近在玩domino,积累点经验大家分享一下: 开发notes本来就是摸着石头过河,随时会碰到怪问题,结合上java更辛苦:( 但是notes有一些优点,比如全文检索,安全性,开发时效...所以至今仍然占据群件市场的一席之地.如果能把这些功能通过java调用,也算是废物利用吧:) 例子是发送邮件的,但是得到了session, 其它操作和Notes脚本编程没有什么区别了. 这里的操作例子是我公司的环境. web用户采用IIS的结合NT的认证, 因为NT和domino的账号同步, 因此无需用户再特别登录domino. 发送邮件也采用匿名发送, 在Principal域上标注发件用户, 收到的邮件几乎同Notes发送的没有差别. 操作domino服务器需要抽象类(提供连接操作)和实现逻辑操作的类Sendmail. 分别如下: =================================================================================== File: Domino.java: =================================================================================== package steeven.lotus; import lotus.domino.*; import java.util.*; //import lotus.notes.*; //这个类是抽象类, 其他Java程序扩展此类即可. /* 环境: 服务器: Domino5.01 NT4 客户端: Windows2000 准备: 打开Notes Administrator修改服务器文档, 按照Help设置DIIOP服务. 其中注意: 安全性: 运行受限制的 Java/Javascript: * 运行无限制的 Java/Javascript: * 仅允许列在通讯录中的用户访问服务器: 否(可匿名) 端口:internet的端口:IIOP: 验证选项: 名称和口令: 是 匿名: 是 2.在domino控制台: load diiop //启动diiop服务 tell diiop quit //关闭diiop服务 3.连接,可以不用load HTTP服务 推荐使用IOR, C:/Lotus/Domino/Data/domino/html/diiop_ior.txt copy里面全部内容, 含"IOR:" s = NotesFactory.createSessionWithIOR(IOR,user,pwd); //用户身份 s = NotesFactory.createSessionWithIOR(IOR); //匿名 3.匿名发送Email时推荐使用“Principal”域,在信箱会正确显示为你的设定值,唯一痕迹是看信时发件人多个Anonymous From域自动生成为"Anonymous",不可变。 4.调试注意:NotesException不可Cast成Exception否则得不到错误信息


  try{ 

    //diiop codes here 

  } 

  catch(NotesException e) {  //不可Cast 

      System.out.println(e.getClass().getName() ":" e.text); 

      e.printStackTrace(); 

  } 

5. 运行环境,需要NOCR.jar,并且需要调用dll, 文件, 设定环境变量Path, 增加c:/lotus/ntoes, win2000下提示找不到xxxx.dll, 将nxxxx.dll copy后rename即可。 */


public abstract class Domino { 

  private final String host="dminoHost"; 

  private final String user="steeven"; 

  private final String pwd="password"; 

  private final String IOR = "IOR:010000002900000049444c3a6c6f7475732f646f6d696e6f2f636f7262612f494f626a6563745365727665723a312e3000000000010000000000000054000000010101000e0000003133332e3232312e3138382e3100acf6310000000438353235363531612d656336382d313036632d656565302d303037653264323233336235004c6f7475734e4f4901000100000000000000"; 



  protected lotus.domino.Session  s; 



  public Domino()  throws NotesException{ 

    createSession(); 

    System.out.println("domino:" s.toString()); 

  } 

  private void createSession() throws NotesException{ 

//      s = NotesFactory.createSession(host,user,pwd); 

//      s = NotesFactory.createSessionWithIOR(IOR,user,pwd); 

      s = NotesFactory.createSessionWithIOR(IOR); 

  } 

} 



=================================================================================== 

File: Sendmail.java: 

=================================================================================== 



package steeven.lotus; 

import lotus.domino.*; 

import java.util.*; 

//import lotus.notes.*; 



public class Sendmail extends Domino{ 



  java.util.ArrayList grpUsers = new java.util.ArrayList(); 



  Database db; 

  Document memo; 

  RichTextItem rti; 



  private Vector to = new Vector(); 

  private boolean attachForm = false; 

  static String mailFooter = "/n/n/n此邮件由WebMail发送 http://www/mail.jsp/n/n"; 





  public Sendmail() throws NotesException{ 

    System.out.println("sendmail"); 

    db = s.getDatabase(null,"WebMail.nsf"); 

    memo = db.createDocument(); 

    rti = memo.createRichTextItem("Body"); 

        memo.setEncryptOnSend(true); 

        memo.setSignOnSend(true); 

        memo.sign(); 

    memo.setSaveMessageOnSend(true); 



  } 

  public Sendmail(String to,String from,String subject,String body) throws NotesException{ 

    this(); 

    setSendTo(to); 

    setFrom(from); 

    setSubject(subject); 

    setBody(body); 

    System.out.println("Sendmail with contructor"); 

  } 

  public Sendmail(String to[],String from,String subject,String body) throws NotesException{ 

    this(); 

    setSendTo(to); 

    setFrom(from); 

    setSubject(subject); 

    setBody(body); 

    System.out.println("Sendmail with contructor"); 

  } 

  public void setSubject(String n) throws NotesException{ 

    memo.appendItemValue("Subject",n); 

  } 

  public void setFrom(String n) throws NotesException{ 

    memo.appendItemValue("Principal",n); 

  } 

  public void setSendTo(String n) throws NotesException{ 

    to.add(n); 

    memo.appendItemValue("SendTo",n); 

  } 

  public void setSendTo(String n[]) throws NotesException{ 

    appendArray("SendTo",n); 

    for(int i=0;i
      
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值