Проблема SecurityManager со встроенным в SWT браузером Mozilla, работающим через Java WebStart (jnlp) - PullRequest
2 голосов
/ 23 февраля 2011

Я занимаюсь разработкой нестандартного приложения.По сути, это SWT-приложение, использующее встроенный браузер Mozilla (mozilla-interfaces-1.9.2.12.jar, mozilla-glue-1.9.2.12.jar), которое должно отображать HTML-страницы, содержащие апплеты (также разработанные мной).Эти апплеты подписаны, а сертификаты импортированы в хранилище ключей.При запуске апплетов в стандартном автономном браузере Mozilla все работает хорошо.

Даже при нормальном запуске моего SWT-приложения (я имею в виду автономное настольное Java-приложение без SecurityManager) все работает просто отлично - встроенный браузер отображается и отображает HTML-страницы сapplets.

Однако у меня возникают проблемы, как только я пытаюсь запустить это приложение через Java Web Start (jnlp).Я полагаю, что мой jnlp четко определен, он содержит все теги, которые я смог найти в интернет-дискуссиях.Так есть например

<security>
     <all-permissions/>
</security> 

и т. Д.Мое приложение SWT, соответственновсе его jar-файлы подписаны (тот же сертификат, который использовался для апплетов).Он запускается нормально, он выполняет операции, которые не будут разрешены без всех разрешений и подписи, он даже показывает окна SWT (таким образом, сам SWT работает нормально), но когда он должен показывать встроенный браузер, я получаю исключение UnsatisfiedLinkException.Забавно, что когда я создаю файл .java.policy с определенным набором разрешений, он начинает работать нормально, апплеты тоже работают.Играя роль Шерлока Холмса Я понял, что этот набор разрешений содержит

  java.io.FilePermission 
  java.lang.RuntimePermission 
+ permissions that are neccessary for applets.

Имеет ли это смысл для кого-либо из вас?Похоже, что браузер SWT Mozilla работает в каком-то особенном SecurityManager, который игнорирует тот факт, что само приложение подписано, а также есть тег в моем файле jnlp.

Когда я загружаю страницы без апплетов, все еще упоминались два разрешения:обязательно отображать окно браузера вообще.Я хотел бы запустить это приложение без каких-либо файлов .java.policy и без дополнительных настроек на стороне пользователя.Я ценю каждый совет.

Заранее спасибо.

Войта

1 Ответ

0 голосов
/ 16 апреля 2011

Не уверен, что та же проблема, потому что я никогда не использовал апплеты, но у меня также были проблемы при попытке запустить приложения на базе SWT-браузера с помощью xulrunner в комплекте через webstart.

Одним из способов решения этой проблемы была настройкаполитика внутри кода Java (непосредственно перед созданием экземпляра Browser ...)

Policy.setPolicy(new Policy() {
  public PermissionCollection getPermissions(CodeSource codesource) {
    Permissions perms = new Permissions();
    perms.add(new AllPermission());
    return(perms);
  }
  public void refresh() { }
}

Я помню, что Windows XP все еще не могла запустить JNLP с этим.Но Windows 7, несколько версий Linux и Mac OS X могли.

...