2

我在服务器端使用休眠,客户端应用程序通过 Java Web Start 启动。我不能在罐子上签名(我想但我不能)。当我得到一个带有惰性字段的 POJO 时,我得到一个权限异常。

原因:java.security.AccessControlException:java.lang 的 java.security.AccessController.checkPermission(Unknown Source) 的 java.security.AccessControlContext.checkPermission(Unknown Source) 的访问被拒绝(java.util.PropertyPermission cglib.debugLocation 读取) .SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPropertyAccess(Unknown Source) at java.lang.System.getProperty(Unknown Source) at net.sf.cglib.core.DebuggingClassWriter.(DebuggingClassWriter.java:35) ... 44 更多

我怎样才能避免这种情况?在将 pojo 返回给客户端之前,我曾考虑将集合设置为 null,但我想找到更好的解决方案。

4

2 回答 2

2

你有两个选择:

  • 签署您的应用程序中的所有罐子;
  • 将字节码提供程序从 cglib 更改为 javassist,这不会发生这种行为(即您只能签署必要的 jar)。-

另请参阅此处有关此问题的新闻。

于 2010-10-27T20:37:20.320 回答
1

由于无论如何您都不能在客户端使用未解析的惰性 Hibernate 字段(访问它们会导致客户端尝试从数据库加载字段)我会选择以下两个选项:

  • 如果您需要客户端的数据,则必须确保惰性字段已由服务器解析,然后再将 POJO 返回给客户端。

  • 如果您不需要这些字段,我会将它们设置为空。

于 2009-10-05T10:03:50.383 回答