nixp.ru v3.0

23 октября 2017,
понедельник,
16:38:13 MSK

DevOps с компанией «Флант»
Fatal написал 26 декабря 2005 года в 16:58 (1303 просмотра) Ведет себя как мужчина; открыл 123 темы в форуме, оставил 484 комментария на сайте.

Привет!

Подскажите, пожалуйста.

ситуация такая:

У меня есть приложение написанное на 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»;

моя прога не грузиться, да ещё и не выдаёт ошибок?

Fatal

Вопрос можно по другому задать, проще.

Какая разница между

permission java.util.PropertyPermission «*», «read»;

permission java.util.PropertyPermission «*», «write»;

и если бы я просто разрешил все свойства на чтение и запись, указав их явно?

estarter

хм…

насколько я знаю, когда ты запускаешь апплет, ему даются ограниченные права на чтение\запись файлов (ну или вообще запрещены эти операции).Т.е. часто надо явно указывать, что апплет может писать\читать — это зависит от ява-машины.

разрешения типа permission java.util.PropertyPermission «os.name», «read» позволяют получать свойства окружения. когда ты пишешь *, 'read’ — разрешается читать все.

насколько я понимаю, все, что не разрешено явно писаться\читаться — запрещено.

>>и если бы я просто разрешил все свойства на чтение и запись, указав их явно?

ну не факт, что ты знаешь явно указываешь все нужные твоей проге свойства…

Fatal

да, здесь я с тобой согласен. Поэтому я и отказался от идеи указать все свойства явно.