当前位置: 首页 > 面试题库 >

如何在GWT的序列化政策白名单中添加类型?

齐成双
2023-03-14
问题内容

GWT的序列化器java.io.Serializable支持有限,但出于安全原因,存在其支持的白名单。我找到的文档(例如此FAQ条目)说,您要序列化的任何类型“都必须包含在序列化策略白名单中”,并且该列表是在编译时生成的,但没有说明编译器如何决定白名单上的内容。

生成的列表包含许多标准库的类型,例如java.lang.Stringjava.util.HashMap。尝试序列化时会出现错误java.sql.Date,该序列实现了Serializable接口,但不在白名单上。如何将这种类型添加到列表中?


问题答案:

只要您实现了java.io.Serializable,您在服务界面中包括的任何特定类型及其引用的任何类型都将自动列入白名单,例如:

public String getStringForDates(ArrayList<java.util.Date> dates);

将导致ArrayList和Date都包括在白名单中。

如果尝试使用java.lang.Object而不是特定类型,则会变得更加棘手:

public Object getObjectForString(String str);

因为编译器不知道将什么列入白名单。在这种情况下,如果未在服务接口中的任何地方引用对象,则必须使用IsSerializable接口显式标记它们,否则,将无法通过RPC机制传递它们。



 类似资料:
  • 我在项目中使用Infinispan和hibernate,遇到了一个奇怪的错误日志: ISPN000936:类“[I”被反序列化白名单阻止。请调整配置序列化白名单正则表达式以包含此类 我已经有了这个问题,但是使用了普通的类名,所以我可以通过将类添加到序列化白名单来解决这个问题,如下所示: 但是有了这个奇怪的类名()我不能这么做。我可以通过授权序列化白名单中的所有类来解决这个问题,如下所示: 但是我想

  • 我基于Kubernetes构建了一个自助服务平台,在这里我们为每个团队创建名称空间,并允许他们“在名称空间内做他们想做的任何事情”(我们设置了资源限制,这样就没有人可以杀死整个集群)。 然而,现在我想在整个组织中实现某种标准。例如,我希望每个PodSpec都定义自己的资源限制,并且希望每个资源都有一个标签,指定它属于哪个应用程序。

  • 问题内容: 我已经开始阅读有关Java序列化以及其他语言的一些文章,但是如果我有一个通用类并且想要将其实例保存到文件中该怎么办。 代码示例 保存此类对象的最佳方法是什么?(当然,在我真正的复习课程中还有更多,但我只是想知道实际的想法。) 问题答案: 您 需要照常制作通用类。 如果使用通用类型声明字段,则 可能需要 指定应实现。 请注意此处不常见的Java语法。

  • 我需要向常规类列表中添加一个动态类,但不知道如何添加(我使用的是babel),如下所示: 有什么想法吗?

  • 问题内容: 是否可以在Java中对匿名类进行Seaalal / Deearialize? 例: 我的问题是我想执行一些自定义管理任务,因此我不需要为每个任务发布版本。所以我想做的是- 通过Groovy脚本引擎通过HTTP端点发布自定义任务,并将它们序列化为db以及时运行它们。 问题答案: 可能是危险的。匿名类的名称/数量由编译器生成,并基于它们在文件中出现的顺序。例如,如果您交换两个类的顺序,它们

  • 它说我需要白名单一个域,但我在控制台中找不到任何地方这样做,除了我创建的动态链接。我尝试运行下面的代码,但我得到 我不应该使用动态链接进行火警认证吗?如果是这样,我在控制台的什么地方白名单域,因为我找不到它。