Java.policy

Кирилл Шваб

Well-Known Member
30.06.2006
145
4
#1
Мы используем POI 3.8 для выгрузки данных в Excel (используется XSSF). Библиотеки POI добавлены в Java-агента (а не выложены в jvm/lib/ext на сервер), поэтому для нормальной работы агента необходимо в java.policy добавить различные разрешения.

Прописывать permission java.security.AllPermission в общую секцию grant {} не хочется ни нам, ни заказчику, поскольку это практически отключает SecurityManager'а.

Отсюда вопрос - можно ли указать разрешения для конкретной базы?
И какой должен быть формат у записи, т.к. сколько мы не пробовали прописывать что-то вроде:

grant codeBase "file:.../-" {
}

Разрешения не применялись.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 490
366
#3
ещё можно получить путь класса (к-л) в базе, а потом вбить его
 

Кирилл Шваб

Well-Known Member
30.06.2006
145
4
#4
а почему не на конкретный список классов, а именно на базу?
Если добавить все разрешения (java.security.AllPermission) в общую секцию grant, то получим отключенный SecurityManager.
Т.е. из любой базы/агента/архива-jar и т.д. на сервере можно будет спокойно выполнять код со всеми разрешениями.

А мы хотим добавить все разрешения только для агентов из нашей базы.

ещё можно получить путь класса (к-л) в базе, а потом вбить его
А можно поподробней как это будет выглядеть.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 490
366
#5
<!--shcode--><pre><code class='java'> public void test(){
try {
System.out.println(this.getClass().getProtectionDomain());
// Class myclass = Class.forName("org.apache.oro.text.regex.Perl5Matcher");
// System.out.println(org.apache.oro.text.regex.Perl5Matcher.class.getProtectionDomain());
System.out.println(new File(".").getAbsolutePath());
System.out.println(new File(getClassPath()).getAbsolutePath());
} catch(Exception e) {
e.printStackTrace();
}
}
static String getClassPath() {
return prop.getProperty("java.class.path", null);
}[/CODE]пущал в агенте - выдаёт нотусовую диру и lotus.domino.AgentLoader@<некий номер после компиляции>
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 490
366
#6
моё предположение основывалось на получении текущего класспаз, но оно не получается (для агента пустой getCodeSource())