2012-05-09 2 views
3

Добрый день, друзья! У меня здесь одна огромная проблема! Во-первых, в прошлом году я задал вопрос о том, как установить прокси-сервер в JVM, чтобы агент Lotus Notes, запрограммированный в java, мог пройти через веб-службу (также в java). Я, наконец, нашел проблему после нескольких недель исследований, и теперь она работает! Итак, теперь пришло время переместить это в среду тестирования пользователей ... Угадайте, что?!? Не работает! Но, я не сталкиваюсь с той же проблемой. На самом деле, чтобы установить прокси-сервер в JVM, мне нужно установить свойство «http.proxyHost» и «http.proxyPort». Таким образом, я получил администратора сервера Domino, чтобы изменить файл «java.policy» на сервере, чтобы я мог получить доступ к этим свойствам (я получил их копию версии разработки «java.policy» и вставлял ее в «UAT «версия»). Не повезло! Тот же самый код реплицировать на другом сервере с точно такой же файл политики ведут себя два разных способа ... Я получаю это:Некоторые изменения в java.policy не поддерживаются JVM

java.security.AccessControlException: access denied (java.util.PropertyPermission http.proxyHost write) 

Мы пытались инвертировать предоставление разрешения, мы попытались дать разрешение на «http.proxyHost» и "proxyHost". Ничего не работало ... Итак, я заставил их удалить все разрешения в разделе «grant» (без кодовой базы) и поставить только AllPermission. Это сработало! Я предполагаю, что у нас есть ошибка в файле политики, так что разрешения не позаботятся. Мне было интересно, если вы могли бы дать мне руку на это ... Вот файл политики:

// 
// @(#)src/security/sov/config/java.policy, security, as142, 20070303 1.4.2.2 
// =========================================================================== 
// Licensed Materials - Property of IBM 
// "Restricted Materials of IBM" 
// 
// IBM SDK, Java(tm) 2 Technology Edition, v1.4.2 
// (C) Copyright IBM Corp. 1998, 2002. All Rights Reserved 
// =========================================================================== 
// 


// Standard extensions get all permissions by default 

grant codeBase "file:${java.home}/lib/ext/*" { 
     permission java.security.AllPermission; 
}; 

// default permissions granted to all domains 

grant { 
     // Allows any thread to stop itself using the java.lang.Thread.stop() 
     // method that takes no argument. 
     // Note that this permission is granted by default only to remain 
     // backwards compatible. 
     // It is strongly recommended that you either remove this permission 
     // from this policy file or further restrict it to code sources 
     // that you specify, because Thread.stop() is potentially unsafe. 
     // See "http://java.sun.com/notes" for more information. 
     permission java.lang.RuntimePermission "stopThread"; 
     permission java.lang.RuntimePermission "setContextClassLoader"; // This was added 

     // allows anyone to listen on un-privileged ports 
     permission java.net.SocketPermission "localhost:1024-", "listen"; 

     permission java.net.NetPermission "setDefaultAuthenticator"; 
     permission java.util.PropertyPermission "http.proxySet", "write"; 
     permission java.util.PropertyPermission "http.proxyHost", "write"; 
     permission java.util.PropertyPermission "http.proxyPort", "write"; 


     // "standard" properies that can be read by anyone 

     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 "os.name", "read"; 
     permission java.util.PropertyPermission "os.version", "read"; 
     permission java.util.PropertyPermission "os.arch", "read"; 
     permission java.util.PropertyPermission "file.separator", "read"; 
     permission java.util.PropertyPermission "path.separator", "read"; 
     permission java.util.PropertyPermission "line.separator", "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.assistive", "read"; 

}; 

// Notes java code gets all permissions 

grant codeBase "file:${notes.binary}/*" { 
     permission java.security.AllPermission; 
}; 

grant codeBase "file:${notes.binary}/rjext/*" { 
     permission java.security.AllPermission; 
}; 

Любой ключ будет высоко оценили ... клиент очень устал это не работает!

+2

делает 'разрешение java.util.PropertyPermission "*", "чтение, запись";' помогает? –

+0

Эй! Я собираюсь попробовать это! По вашему опыту, как вы думаете, может быть какая-то опасность установить это? Любые «опасные» свойства? –

+0

Не работает ... java.lang.SecurityException: не разрешено получать доступ к свойствам системы. –

ответ

0

Для людей, которые могут иметь эту же проблему и получить здесь googling, я решил эту проблему, позволив получить/установить AllProperties. Я до сих пор не знаю, почему перечисляя то не получилось ...

0

Файл Domino\jvm\lib\security\java.security определить 3 файла политики

# The default is to have a single system-wide policy file, 
# and a policy file in the user's home directory. 
policy.url.1=file:${java.home}/lib/security/java.policy 
policy.url.2=file:${java.home}/lib/security/java.pol 
policy.url.3=file:///${user.home}/.java.policy 

Вы можете настроить политику создания файла java.pol. Также domino сервер повторно инициализирует java.policy.

подробнее https://www-304.ibm.com/support/docview.wss?uid=swg21679242

Смежные вопросы