2

尝试在通过 Xpage 启动的 java 方法中使用Google GSON 库

我可以毫无问题地创建 gson 对象,但是在尝试调用时gson.toJson(jsonObj)出现以下错误:

HTTP JVM:java.lang.SecurityException:不允许访问类 java.util.HashMap 中的成员

HTTP JVM:在 lotus.notes.AgentSecurityManager.checkMemberAccess(未知来源)

HTTP JVM:在 java.lang.Class.checkMemberAccess(Class.java:112)

HTTP JVM:在 java.lang.Class.getDeclaredConstructor(Class.java:419)

编码:

HashMap<String, Object> jsonObj = new HashMap<String, Object>();
jsonObj.put("apiStatus", apiStatus);

Gson gson = new Gson();
String json = gson.toJson(jsonObj);  // Exception thrown on this line

我在这里看到过类似的东西,但我已经实施了两个建议的政策更改,但似乎都没有任何效果:

授予 { 权限 java.lang.reflect.ReflectPermission "suppressAccessChecks"; };

授予 codeBase "xspnsf://server:0/path/to/your/db.nsf/-" { 权限 java.security.AllPermission; };

4

2 回答 2

1

如果您不喜欢更新服务器文件系统上的安全文件,您可以避免使用 gson 并将其替换为 xpages 自己的 JSON 序列化程序,请参阅我的博客文章:

http://blog.tcl-digitrade.com/blogs/tcl-digitrade-blog.nsf/dx/28.01.2013090943DMABL6.htm

于 2013-04-11T14:51:55.670 回答
0

这是几乎相同的例外:

Domino XPage 上 Jackson 的 Java 权限

利用

grant { permission java.security.AllPermission; };

它应该与它一起工作。如果您不想让它保持打开状态,请检查您的语法grant codeBase

在此设置中,您必须更改数据库的路径(仅通过替换 /path/to/your/db.nsf/而不是 server:0)。

于 2013-04-11T14:05:01.103 回答