2013-04-11 72 views
2

試圖在通過Xpage啓動的java方法中使用Google GSON library使用Google GSON的Lotus Domino Java安全問題

試圖調用gson.toJson(jsonObj)我收到以下錯誤,當我可以創建GSON對象沒有問題,但後來:

HTTP JVM: java.lang.SecurityException: not allowed to access members in class class java.util.HashMap

HTTP JVM: at lotus.notes.AgentSecurityManager.checkMemberAccess(Unknown Source)

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

HTTP JVM: at 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 

我見過something similar here但我實施了兩項建議的政策更改,但都沒有任何效果:

grant { permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; };

grant codeBase "xspnsf://server:0/path/to/your/db.nsf/-" { permission java.security.AllPermission; };

回答

0

這裏幾乎是相同的異常:

Java Permission for Jackson on Domino XPage

使用

grant { permission java.security.AllPermission; }; 

應該與工作。如果你不想保持這種開放然後檢查你的grant codeBase的語法:

In this setting you have to change the path to your database (by replacing the /path/to/your/db.nsf/ only, not the server:0).

+0

謝謝PANU,我還需要最後的斜槓之後幾許? – 2013-04-11 15:01:24

+0

我從來沒有使用過,但破折號在所有說明中都有,所以我相信是的。 – 2013-04-12 07:17:44

1

如果你不喜歡更新服務器上的文件系統中的安全文件,你能避免使用GSON和進行XPages更換自己的JSON序列見我的博客文章在這裏:

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

+0

謝謝大衛,我來看看。 – 2013-04-11 15:00:16

+0

8.5.2(我認爲)之後Domino自帶的包是[com.ibm.commons.util.io.json](http://public.dhe.ibm.com/software/dw/lotus/Domino-設計師/ JavaDoc中/ DesignerAPIs/COM/IBM /公/ UTIL/IO/JSON /包summary.html)。 – 2014-09-08 16:13:33