Java Web Start: неподписанный cglib

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

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

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

2 ответа

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

  • подписать все банки в вашем приложении;
  • измените поставщика байт-кода с cglib на javassist, который не имеет такого поведения (т.е. вы можете подписывать только необходимые jar-файлы).-

Смотрите также новости о проблеме здесь.

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

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

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

Другие вопросы по тегам