2

Java Web Start を介して起動されたクライアント アプリケーションを使用して、サーバー側で休止状態を使用しています。jar に署名できません (したいのですができません)。遅延フィールドを含む POJO を取得すると、許可例外が発生します。

原因: java.security.AccessControlException: アクセスが拒否されました (java.util.PropertyPermission cglib.debugLocation 読み取り) java.security.AccessControlContext.checkPermission(不明なソース) で java.security.AccessController.checkPermission(不明なソース) で java.lang .SecurityManager.checkPermission(不明なソース) at java.lang.SecurityManager.checkPropertyAccess(不明なソース) at java.lang.System.getProperty(不明なソース) at net.sf.cglib.core.DebuggingClassWriter.(DebuggingClassWriter.java:35) ... 44 以上

どうすればそれを回避できますか? pojo をクライアントに返す前にコレクションを null に設定することを考えましたが、より良い解決策を見つけたいと思います。

4

2 に答える 2

2

次の 2 つのオプションがあります。

  • アプリケーション内のすべての jar に署名します。
  • バイトコード プロバイダーを cglib から、そのような動作をしない javassist に変更します (つまり、必要な jar のみに署名できます)。

この問題に関するニュースも参照してください

于 2010-10-27T20:37:20.320 に答える
1

とにかく、クライアント側で未解決の怠惰な Hibernate フィールドを使用することはできないため (それらにアクセスすると、クライアントはデータベースからフィールドをロードしようとします)、次の 2 つのオプションのいずれかを選択します。

  • クライアント側でデータが必要な場合は、POJO をクライアントに返す前に、遅延フィールドがサーバーによって解決されていることを確認する必要があります。

  • フィールドが必要ない場合は、null に設定します。

于 2009-10-05T10:03:50.383 に答える