在IBM Domino中从Session获取AdministrationProcess时,在服务器上获得受限制的操作

时间:2014-03-14 10:14:25

标签: java lotus-domino

我需要通过java代码将组成员添加到IBM Domino Group。我使用Notes.jar连接到IBM Domino v9.0,我的java代码在不同的机器上运行,然后在Domino机器上运行。 从Domino文档中我发现需要使用“AdministrationProcess”类将成员添加到组中。但是当我试图通过调用session.createAdministrationProcess(“IBMDominoServer”)来创建“AdministrationProcess”对象时。我收到错误服务器上的受限操作

我的测试代码如下

public class LotusDomino{
public static void main(String args[]) throws Exception{
    String[] argv = {"192.168.2.111","Administrator","<password>"};
    deleteUser(argv[0], argv[1], argv[2]);
}
private static void deleteUser(String host, String userName, String password) throws Exception{
    Session s = NotesFactory.createSession(host, userName, password);
    try{
        AdministrationProcess process = s.createAdministrationProcess("IBMDominoServer.xanadufinancials.com");
    }catch(NotesException e){
        System.err.println("exception --- "+e.id+":"+e.text+":"+e.internal); // this prints the following error : exception --- 4183:Restricted operation on a server:null
    }
}

代码显示相同的错误,不管我作为服务器名称传入的内容。所以它不应该是代码问题。我做了一点搜索,发现管理员应该在admin4.nsf上有编辑器访问权限。验证了它存在的访问权限。

请告诉我可能出现的问题。提前谢谢。

1 个答案:

答案 0 :(得分:2)

使用管理进程是将用户添加到组的一种方法,当您不知道如何配置Domino服务器上的目录服务时,这是最安全的方法。但在大多数基本配置中,将用户添加到组中非常简单。打开names.nsf数据库,打开“组”视图,找到该组的文档,然后将该名称添加到存储在“成员”项中的列表中。唯一的问题是,如果成员列表太长,您可能必须编写能够将其划分为子组的代码(和/或代码以检测现有子组的模式并添加到它们中)。

关于使用NotesAdministrationProcess类,如果我们可以相信错误消息表示它所表示的含义,那么您的问题是您使用的用户ID无权在服务器上运行受限操作。这是代理商权限的link to info about server configuration。如果您正在使用NCSO.jar(请参阅上面的问题),那么对于允许通过IIOP执行限制操作的用户来说,这是一个单独的配置,但我不确定,我的服务器此刻已关闭,因此我无法检查