需求是要调用一个Domino上的WebService/JAVA来实现与人事管理系统里的人员同步,就是在人事管理系统中增加用户后,自动在Domino中注册该用户和邮箱。

  考虑了一下,大概有几种方式可以实现

1.在Domino中建立webservice提供者,人事管理系统访问这个webservice将参数传过来,通过webservice实现用户注册;

2.通过java/lotusscript代理实现;

3.在人事管理系统引入Notes的类库,在人事管理系统中开发程序访问Domino DIIOP端口对Domino操作;

4.引入LDAP类,通过对Domino LDAP的读取进行同步。

  因为webservice提供者和webservice使用者是Domino
8.5里的新功能,所以花了两天时间研究了一下,用webservice实现了这个需求。做好之后发现还是挺方便的,主要是接口统一了,和lotusscript代理比起来,与第三方系统集成就容易多了。

一、webservice提供者的开发

首先在domino应用程序里建立一个新的webservice提供者,命名叫regUser



在这个webservice里创建java
class,regUser.java,源代码的框架基本是自动生成的,自己编写需要处理的代码就好了,首先引入需要的类

import lotus.domino.*;

import java.net.*;

import java.io.*;



然后可以像java代理一样,通过domino session对domino进行用户注册操作

Session session;

session = WebServiceBase.getCurrentSession();

Registration reg = session.createRegistration();

reg.setRegistrationServer("Mail");

reg.setCreateMailDb(true);

reg.setCertifierIDFile("c:\IBM\Lotus\Domino\MailData\cert.id");

注册的代码就省略了,可以参考domino designer help里的registration类



因为注册类填写的用户信息较少,所以注册用户之后,需要把用户管理程序传过来的其他参数同步,同样可以像java代理一样直接对用户文档通过replaceItemValue进行操作

Database db = session.getDatabase("Mail","names.nsf");

View view = db.getView("People");

Document doc = view.getDocumentByKey(userName, false);

doc.replaceItemValue("EmployeeID", userId);

doc.save(false,false,true);



保存之后,还要修改webservice的属性里,端口类型类的值,改为我们调用的regUser方法





因为是注册用户和修改文档的操作,还要修改属性中“安全”的选项





这样这个webservice就做好了,非常简单,如果代码有错误,domino
designer也会自动提示在哪行有什么错误,而且可以提供快速修正的方法。



二、webservice使用者的开发

  regUser服务做好之后,因为没有人事管理系统的访问权限,无法直接用第三方系统进行直接调试,我们可以先在domino中开发一个webservice使用者,通过用人事管理系统提供的接口,用相同的调用方式来访问这个regUser服务进行测试。

开发webservice使用者更加简单,新建一个webservice使用者,设置名称,输入webservice提供者的WSDL地址就可以了,类型用lotusscript或者java都没关系,因为只是调用服务,实际的工作是由regUser服务完成的,所以这里在webservice使用者中并不需要编写代码。





建好webservice使用者之后,代码是自动生成的,非常简单,就是读取了regUser的WSDl,为regUser服务定义了addUser方法(之前在webservice提供者中定义的注册用户方法命名为addUser,有22个参数要传递)

%INCLUDE "lsxsd.lss"

Class RegUser As PortTypeBase

   Sub
NEW

   
    Call
Service.Initialize ("UrnDefaultNamespaceregUserService", _

   
   
"regUserService.Domino",
"http://mail.cn.ibm.com:80/test.nsf/regUser?OpenWebService",
_

   
   
"RegUser")

    End
Sub

   

    Function
addUser(in0 As String, in1 As String, in2 As String, in3 As String,
in4 As String, _

    in5 As
String, in6 As String, in7 As String, in8 As String, in9 As String,
in10 As Long, _

    in11 As
String, in12 As String, in13 As String, in14 As String, in15 As
String, in16 As String, _

    in17 As
String, in18 As String, in19 As String, in20 As String, in21 As
String, in22 As String) As String

   
    Let addUser
= Service.Invoke("addUser", in0, in1, in2, in3, in4, in5, in6, in7,
in8, in9, in10, in11, in12, in13, in14, in15, in16, in17, in18,
in19, in20, in21, in22)

    End
Function

End Class



最后,编写一个lotusscript代理来访问这个webservice使用者,也很简单,就是调用addUser方法,传递测试数据。

Option Public

Option Declare

Use "regUserFromWebService"

Sub Initialize()

    Dim service
As   RegUser

    Set
service=New   RegUser

    MsgBox
service.addUser("955123", "zhangsan",
"zhangsan","2000.07","2011.03","","000111","05","zhangsan","Male",33,"110101198001010016","123456","66666666","13800138000","zhangsan@cn.ibm.com","engineer","","China","","Beijing","","07")

End Sub



运行代理,成功啦!

Domino 8.5 WebService开发一例的更多相关文章

  1. 如何开发Domino中的WebService

    在domino中写webservice可以使用LotusScript,也可以使用java,由于LotusScript API提供的功能多数都是操作domino数据库中文档的,在web service中 ...

  2. Webservice开发概念

    一.Web Service基本概念 Web Service由两部分组成 SOAP--Web Service之间的基本通信协议. WSDL--Web Service描述语言,它定义了Web Servic ...

  3. eclipse下的webservice开发

    关于eclipse下的webservice开发,有非常多的教程,这里只记下学习过程中的弯路: 1.无论是CXF模式还是AXIS模式,在出现start server之后,点击next报错:"s ...

  4. [推荐]WebService开发知识介绍

    [推荐]WebService开发知识介绍 WebService开发手册  http://wenku.baidu.com/view/df3992ce050876323112128a.html WebSe ...

  5. Webservice开发、引用

    一.Webservice开发 1.在解决方案右键添加新建项目,新建空的web应用程序 2.在新建的项目右键添加新建项选择web服务 3.这里就是webservice 里的方法,可以添加自己需要的方法( ...

  6. Delphi XE5通过WebService开发Web服务端和手机客户端

    Delphi XE5通过WebService开发Web服务端和手机客户端介绍 我们开发一个三层的android程序 建立一个webservices  stand-alone vcl applicati ...

  7. spring+springmvc+hibernate架构、maven分模块开发样例小项目案例

    maven分模块开发样例小项目案例 spring+springmvc+hibernate架构 以用户管理做測试,分dao,sevices,web层,分模块开发測试!因时间关系.仅仅測查询成功.其它的准 ...

  8. 详解WebService开发中四个常见问题(2)

    详解WebService开发中四个常见问题(2)   WebService开发中经常会碰到诸如WebService与方法重载.循环引用.数据被穿该等等问题.本文会给大家一些很好的解决方法. AD:WO ...

  9. 详解WebService开发中四个常见问题(1)

    详解WebService开发中四个常见问题(1)   WebService开发中经常会碰到诸如WebService与方法重载.循环引用.数据被穿该等等问题.本文会给大家一些很好的解决方法. AD:WO ...

随机推荐

  1. nosql学习一

    1.NoSQL,泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难 ...

  2. Mifare S50与Mifare S70

    转自http://blog.sina.com.cn/s/blog_9ed067ad0100zyjx.html Mifare S50和Mifare S70又常被称为Mifare Standard.Mif ...

  3. nginx的使用配置

    nginx为反向代理服务器,可以反向代理不同域名转向不同的具体服务器.可以用于负载压力或是同一台机器使用不同域名进行访问. 以下片段是服务器配置: #user cmcc; worker_process ...

  4. swift material

    import UIKit extension UIColor { convenience init(hex:Int, alpha:CGFloat=1.0) { let red = CGFloat((h ...

  5. PL/SQL 动态SQL

    declare msql varchar2(200); row_id varchar2(200); begin loop row_id := 'AAATGiAAEAAAuLLAAA'; msql := ...

  6. 【转】Ubuntu Server 12.04 静态IP简洁配置

    原文网址:http://blog.csdn.net/njchenyi/article/details/8715417 1.配置静态IP地址: # vim /etc/network/interfaces ...

  7. baiduMap 显示所有的marker(在视野里显示所有的)

    搞Android的,所以比较幸苦和累现在搞的app是关于百度地图的,因为要求要把所有覆盖物显示在一个视野...所以在网上找了很久,终于找打了方法 我引用的包是: 记录一下,其实不算很难.一个小点.翻了 ...

  8. Hbase 设计与开发实战

    Hbase 概述 大数据及 NoSQL 的前世今生 传统的关系型数据库处理方式是基于全面的 ACID 保证,遵循 SQL92 的标准表设计模式(范式)和数据类型,基于 SQL 语言的 DML 数据交互 ...

  9. D - Mayor's posters - 2528(区间覆盖)

    题意:贴海报 有一面很长的墙,大概有10000000 这么长,现有有一些海报会贴在墙上,当然贴海报的顺序是有先后的,问你当最后一张海报也贴上的时候能不能求出来在这面墙上能看到多少张不同的海报? 分析: ...

  10. 泛泰A870刷4.4专用英文版非触摸CWM Recovery 6.0.4.8(三版通刷)

    首先声明. 发此Recovery的目的是測试能否够三版都能够启动. 而且不会出现像850 860之前出现过的卡第一屏问题! 不希望看到某些人士的过度解读!! 此Recovery能够刷第三方4.4 RO ...