2009-10-05 4 views
2

Я использую hibernate на стороне сервера с клиентским приложением, запущенным через Java Web Start. Я не могу подписать банки (я бы хотел, но не могу). Я получаю исключение разрешения, когда получаю POJO с ленивыми полями.Java Web Start: unsigned cglib

Вызванный: java.security.AccessControlException: отказано в доступе (java.util.PropertyPermission cglib.debugLocation чтения) в java.security.AccessControlContext.checkPermission (Unknown Source) в java.security.AccessController.checkPermission (Unknown Источник) на java.lang.SecurityManager.checkPermission (Unknown Source) в java.lang.SecurityManager.checkPropertyAccess (Unknown Source) в java.lang.System.getProperty (Unknown Source) в net.sf.cglib.core .DebuggingClassWriter. (DebuggingClassWriter.java:35) ... 44 еще

Как я могу это пустота? Я думал об установке коллекции в null, прежде чем возвращать pojo клиенту, но я бы хотел найти лучшее решение.

ответ

1

Поскольку вы не можете использовать неразрешенные ленивые поля Hibernate на стороне клиента в любом случае (доступ к ним, приведет к клиенту, чтобы попытаться загрузить поля из БД), я бы выбрал на два варианта:

  • Если вам нужны данные на стороне клиента, вы должны убедиться, что ленивые поля разрешены сервером, прежде чем возвращать POJO клиенту.

  • Если вам не нужны поля, я бы установил их равными нулю.

2

У вас есть два варианта:

  • знак все банки в вас приложений;
  • поставщика изменения байткода от CGLIB к Javassist, которые не такие поведения (то есть вы можете подписать только необходимых банки) .-

Смотрите также новости о выпуске here.

Смежные вопросы