反映在applet中使用GSON库时的权限问题

时间:2010-05-07 11:06:53

标签: java security reflection applet gson

我正在编写一个进行JSON-RPC调用的Applet。我正在使用Google JSON库(GSON)将响应JSON转换为类。 Thsi似乎工作得很好但是当我在我的Applet中使用这个代码时,我遇到了java.lang.reflect.reflectpermission。从我在this thread上看到的SO,似乎由于GSON使用Reflection,我不能在Applet中使用它,除非我明确修改安全策略。我怎么能绕过这个?我在我的应用程序中创建了一堆类,并使用Gson.fromJson方法将其强制转换为类。有没有办法实现相同的功能,而无需重写我的一半代码。

(在Java中处理JSON的复杂性似乎属于它自己的联盟​​!)

先谢谢你们。

2 个答案:

答案 0 :(得分:0)

除了signing小程序之外,您可以尝试在AccessController#doPrivileged()中执行此操作:

public void init() {
    AccessController.doPrivileged(new PrivilegedAction<Object> {
        @Override public Object run() {
            // Put your original init() here.
            return null;
        }
    });
}

答案 1 :(得分:0)

Java的一些JSON库确实令人麻木,特别是考虑到JSON本身的简单性。在我看来,http://www.json.org/java/index.html是最好的库,并没有做任何花哨的技巧,只是将JSON解析为它自己的特殊结构,就是这样。这当然意味着你必须制作特定的代码来将JSON对象层次结构转换为你使用的东西,但这不应该那么难。

GSON更多地关注基于JSON的持久性XStream(它也可以做JSON),并且对于一个Applet来说听起来有点过于沉重。