我在基于 Java 的 DXL 导入时遇到问题。
我们希望通过 Java 框架维护属性文件。我正在文件系统上使用临时文件(我正在本地服务器上工作)。我将新的属性文件导出到我的文件系统,在同一文件夹中生成 DXL 文件,然后尝试将 DXL 导入到我的数据库中。
我已经完成了导入器的多个选项,我们正在使用 sessionAsSignerWithFullAccess 创建流和导入器。该代码是使用对所有内容具有完全访问权限的服务器管理员的 ID 进行签名的。
导入 DXL 时,我仅收到错误消息“DXL 导入操作失败”,导入器的错误日志显示我无权执行此操作。
您知道可能出现什么问题吗?从我的角度来看,我不能再给我的用户在服务器上的任何权利。
这是导入函数的代码:
private void importDXLFile(String filepath) {
String dxlPath = filepath.replaceAll(".properties", ".dxl");
DxlImporter importer = null;
Stream stream = null;
System.out.println("dxlPath: " + dxlPath);
try {
stream = BCCJsfUtil.getCurrentSessionAsSignerWithFullAccess(FacesContextEx.getCurrentInstance()).createStream();
if (!stream.open(dxlPath, "ISO-8859-1")) {
System.out.println("Cannot read " + dxlPath + " from server");
}
System.out.println("User: " + BCCJsfUtil.getCurrentSessionAsSignerWithFullAccess(FacesContextEx.getCurrentInstance()).getEffectiveUserName());
importer = BCCJsfUtil.getCurrentSessionAsSignerWithFullAccess(FacesContextEx.getCurrentInstance()).createDxlImporter();
importer.setReplaceDbProperties(false);
importer.setReplicaRequiredForReplaceOrUpdate(false);
importer.setDesignImportOption(DxlImporter.DXLIMPORTOPTION_REPLACE_ELSE_CREATE);
importer.setInputValidationOption(DxlImporter.DXLVALIDATIONOPTION_VALIDATE_NEVER);
importer.setExitOnFirstFatalError(false);
importer.importDxl(stream.readText(), BCCJsfUtil.getCurrentDatabase());
stream.close();
} catch (NotesException e) {
e.printStackTrace();
try {
System.out.println("Log: " + importer.getLog());
System.out.println("LogComment: " + importer.getLogComment());
} catch (NotesException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
正如你所看到的,我尝试了几个选项,希望它能改变任何事情,但它总是相同的错误消息。
生成的 DXL 似乎有效,因为我们可以使用 Ytria 手动导入它。
我希望有人有想法。任何帮助将不胜感激。
提前致谢。
马蒂亚斯
最佳答案
请检查您的 ACL 设置: “最大互联网名称和密码”是否设置为“管理员”或“设计者”?
关于java - 导入DXL文件时出现"You are not authorized...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14232336/