Java.policy

Тема в разделе "Lotus + Java + LS2J", создана пользователем Кирилл Шваб, 22 май 2012.

  1. Кирилл Шваб

    Кирилл Шваб Well-Known Member

    Регистрация:
    30 июн 2006
    Сообщения:
    145
    Симпатии:
    4
    Мы используем POI 3.8 для выгрузки данных в Excel (используется XSSF). Библиотеки POI добавлены в Java-агента (а не выложены в jvm/lib/ext на сервер), поэтому для нормальной работы агента необходимо в java.policy добавить различные разрешения.

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

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

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

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    ещё можно получить путь класса (к-л) в базе, а потом вбить его
     
  4. Кирилл Шваб

    Кирилл Шваб Well-Known Member

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

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

    А можно поподробней как это будет выглядеть.
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    <!--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@<некий номер после компиляции>
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    моё предположение основывалось на получении текущего класспаз, но оно не получается (для агента пустой getCodeSource())
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
Загрузка...
Похожие Темы - Java policy
  1. Andrey Kha
    Ответов:
    0
    Просмотров:
    34
  2. gosteev
    Ответов:
    0
    Просмотров:
    39
  3. Polina
    Ответов:
    0
    Просмотров:
    41
  4. ApplePen
    Ответов:
    0
    Просмотров:
    78
  5. Andrey Kha
    Ответов:
    0
    Просмотров:
    70

Поделиться этой страницей