2009-10-05 25 views
2

我在服務器端使用hibernate,並通過Java Web Start啓動客戶端應用程序。 我不能簽署罐子(我想但我不能)。當我得到一個帶有懶惰字段的POJO時,我得到一個權限異常。Java Web Start:unsigned cglib

造成的:java.security.AccessControlException:訪問被拒絕(java.util.PropertyPermission cglib.debugLocation讀) 在java.security.AccessControlContext.checkPermission(來源不明) 在java.security.AccessController.checkPermission(未知來源) at java.lang.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返回給客戶端之前將集合設置爲空,但我想找到更好的解決方案。

回答

1

既然你不能使用在客戶端反正懸而未決的懶惰Hibernate的領域(訪問它們,會導致客戶端嘗試從數據庫加載字段)我會選擇對兩個選項:

  • 如果您需要客戶端的數據,那麼在將POJO返回給客戶端之前,必須確保服務器解析了惰性字段。

  • 如果您不需要這些字段,我會將它們設置爲null。

2

你有兩個選擇:

  • 登陸您應用中的所有jar文件;
  • 改變字節碼提供從CGLIB 到了Javassist這不這樣 行爲(即你可以只簽署 必要罐)有關問題here .-

參見消息。