Привет!
Подскажите, пожалуйста.
ситуация такая:
У меня есть приложение написанное на Java и оно запускается как applet.
Так же имеется ${java.home}/java.policy, с приблизительным контентом:
grant {
// это приложение конектиться к определённому ftp серверу,
// что бы сохранять и просматривать файлы
permission java.net.SocketPermission «*», «connect, resolve»;
// куча свойств, которые записыает и читает приложение
permission java.util.PropertyPermission «myproperty_1», «read»;
permission java.util.PropertyPermission «myproperty_2», «read»;
permission java.util.PropertyPermission «myproperty_3», «read»;
permission java.util.PropertyPermission «myproperty_4», «read»;
permission java.util.PropertyPermission «myproperty_1», «write»;
permission java.util.PropertyPermission «myproperty_2», «write»;
permission java.util.PropertyPermission «myproperty_3», «write»;
permission java.util.PropertyPermission «myproperty_4», «write»;
// здесь прописаны properies, которые я выхватил из стандартного java.policy
// они разрешены только на read
// эти свойства не читает данное приложение. Но как я полагаю, может быть сам
// стандартный java код читает эти свойства. Хотя если их закоментировать
// ниже описанная трабла всё равно будет иметь место
permission java.util.PropertyPermission «java.version», «read»;
permission java.util.PropertyPermission «java.vendor», «read»;
permission java.util.PropertyPermission «java.vendor.url», «read»;
permission java.util.PropertyPermission «java.class.version», «read»;
permission java.util.PropertyPermission «java.specification.version», «read»;
permission java.util.PropertyPermission «java.specification.vendor», «read»;
permission java.util.PropertyPermission «java.specification.name», «read»;
permission java.util.PropertyPermission «java.vm.specification.version», «read»;
permission java.util.PropertyPermission «java.vm.specification.vendor», «read»;
permission java.util.PropertyPermission «java.vm.specification.name», «read»;
permission java.util.PropertyPermission «java.vm.version», «read»;
permission java.util.PropertyPermission «java.vm.vendor», «read»;
permission java.util.PropertyPermission «java.vm.name», «read»;
permission java.util.PropertyPermission «java.*», «read»;
permission java.util.PropertyPermission «javax.*», «read»;
permission java.util.PropertyPermission «file.separator», «read»;
permission java.util.PropertyPermission «path.separator», «read»;
permission java.util.PropertyPermission «os.name», «read»;
permission java.util.PropertyPermission «os.version», «read»;
permission java.util.PropertyPermission «os.arch», «read»;
permission java.util.PropertyPermission «line.separator», «read»;
};
Трабла:
Когда я згружаю эту прогу через веб страницу, то она не отображается вообще. Никаких сообщений в java console не наблюдается и других сообщений об ошибках также.
А если добавить в файл java.policy строки:
permission java.util.PropertyPermission «*», «read»;
permission java.util.PropertyPermission «*», «write»;
Всё будет работать замечательно.
Хотел я эту проблему продебажить с помощью eclipse. В нём в текущей директории проекта создаётся файл java.policy.applet, который содержит в себе пермишаны. Так вот, если в этот файл скопировать тот же контент, то под eclipse приложение будет запускаться, правда если добавить ещё:
permission java.lang.RuntimePermission «*»;
Если эту строку скопировать в ${java.home}/java.policy, то проблема не решиться. Короче, если запускать это прогу в eclipse и в браузере, то получается разное поведение этого приложения, поэтому продебажить не получается.
Почему без добавления строк
permission java.util.PropertyPermission «*», «read»;
permission java.util.PropertyPermission «*», «write»;
моя прога не грузиться, да ещё и не выдаёт ошибок?
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Вопрос можно по другому задать, проще.
Какая разница между
permission java.util.PropertyPermission «*», «read»;
permission java.util.PropertyPermission «*», «write»;
и если бы я просто разрешил все свойства на чтение и запись, указав их явно?
хм…
насколько я знаю, когда ты запускаешь апплет, ему даются ограниченные права на чтение\запись файлов (ну или вообще запрещены эти операции).Т.е. часто надо явно указывать, что апплет может писать\читать — это зависит от ява-машины.
разрешения типа permission java.util.PropertyPermission «os.name», «read» позволяют получать свойства окружения. когда ты пишешь *, 'read’ — разрешается читать все.
насколько я понимаю, все, что не разрешено явно писаться\читаться — запрещено.
>>и если бы я просто разрешил все свойства на чтение и запись, указав их явно?
ну не факт, что ты знаешь явно указываешь все нужные твоей проге свойства…
да, здесь я с тобой согласен. Поэтому я и отказался от идеи указать все свойства явно.