Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从IBM Domino中的会话获取AdministrationProcess时在服务器上获取受限操作_Java_Lotus Domino - Fatal编程技术网

Java 从IBM Domino中的会话获取AdministrationProcess时在服务器上获取受限操作

Java 从IBM Domino中的会话获取AdministrationProcess时在服务器上获取受限操作,java,lotus-domino,Java,Lotus Domino,我需要通过java代码向IBMDomino组添加组成员。我使用Notes.jar连接到IBMDominoV9.0,我的java代码运行在另一台机器上,然后是Domino机器。 从Domino文档中,我发现需要使用“AdministrationProcess”类将成员添加到组中。但是当我试图通过调用session.createAdministrationProcess(“IBMDominoServer”)来创建“AdministrationProcess”对象时。我在服务器上得到错误限制操作 我的

我需要通过java代码向IBMDomino组添加组成员。我使用Notes.jar连接到IBMDominoV9.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
    }
}
公共类LotusDomino{
公共静态void main(字符串args[])引发异常{
字符串[]argv={“192.168.2.111”,“管理员”,“};
deleteUser(argv[0],argv[1],argv[2]);
}
私有静态void deleteUser(字符串主机、字符串用户名、字符串密码)引发异常{
会话s=NotesFactory.createSession(主机、用户名、密码);
试一试{
AdministrationProcess=s.createAdministrationProcess(“IBMDominoServer.xanadufinanials.com”);
}捕获(注e){
System.err.println(“异常--“+e.id+”:“+e.text+”:“+e.internal”);//这会打印以下错误:异常--4183:服务器上的受限操作:null
}
}
无论我作为服务器名传入什么,代码都会显示相同的错误。因此,这不应该是代码问题。我对此进行了一点搜索,发现管理员应该具有admin4.nsf上的编辑器访问权限。验证了它存在的访问权限


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

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


关于使用NotesAdministrationProcess类,如果我们可以相信错误消息的意思是它所说的意思,那么您的问题是您使用的用户id没有在服务器上运行受限操作的权限。以下是代理权限的示例。如果您使用的是NCSO.jar(请参阅上面的问题),然后是允许用户通过IIOP执行受限操作的单独配置,但我不确定,而且我的服务器目前已关闭,因此我无法检查。

您确定您使用的是Notes.jar吗?上述内容看起来和听起来更像您使用的是NCSO.jar。是的,我使用的是Notes.jar……好的,我的服务器已备份,我已检查。“”Domino目录中服务器文档的“安全”选项卡的“可编程性”部分中的“运行不受限制的方法和操作”字段涵盖了所有语言和接口,包括IIOP。(请不要注意fac,它说“不受限制”,您需要“受限制”的权限。)“。帮助文本明确说明此字段真正做的是指定谁可以不受限制地运行代码。例如,运行受限制的操作。他们只是在字段标签中向后描述。)谢谢Richard,我可以通过更改来实现此功能。我找不到您提到的设置,但修改了设置“签名或运行不受限制的方法和操作”发挥了神奇的作用