Ошибки доступа к свойствам системы

Zeka

Well-Known Member
01.09.2009
219
0
#1
В Script libraries добавил свою java библиотеку, которую вызываю через LS2J.
У меня на компьютере всё работает.

У клиента следующие строчки:
<!--shcode--><pre><code class='java'>System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", "192.168.x.x" );
System.getProperties().put( "proxyPort", "xxxx" );[/CODE]
Выбрасывают экцепшин:
<!--shcode--><pre><code class='java'>java.lang.SecurityException: доступ к свойствам системы
at COM.ibm.JEmpower.applet.AppletSecurity.checkECL(AppletSecurity.java:565)
at COM.ibm.JEmpower.applet.AppletSecurity.maybeFailSecurity(AppletSecurity.java:694)
at COM.ibm.JEmpower.applet.AppletSecurity.maybeFailSecurity(AppletSecurity.java:621)
at COM.ibm.JEmpower.applet.AppletSecurity.checkPropertyPermission(AppletSecurity.java:1234)
at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1514)
at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1455)
at java.lang.SecurityManager.checkPropertiesAccess(SecurityManager.java:1268)
at java.lang.System.getProperties(System.java:311)
at Geocoder.findStreet(Geocoder.java:91)
at Geocoder.getLocation(Geocoder.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at lotus.domino.JavaConnectInvoker.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at lotus.domino.JavaConnectLoader.invoke(Unknown Source)"[/CODE]

Подозреваю, что проблема в java.policy?
Но вот досада, доступ к клиентскому компьютеру затруднителен. Поэтому попытался вызвать подобный экцепшин на своём компе. Изменил java.policy - закомментировал все строчки permission. Но подобного экцепшин так и не получил.

В нужном ли направлении я копаю?
Действительно ли проблема в java.policy?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 484
360
#2
да - это полиси + ECL
т.е. юзверь, на месагу, о правомерности доверия подписанту, бахнул энтер не читая :) (а там - запрет)
 

Zeka

Well-Known Member
01.09.2009
219
0
#3
да - это полиси + ECL
т.е. юзверь, на месагу, о правомерности доверия подписанту, бахнул энтер не читая :) (а там - запрет)
Т.е. если юзер нажмёт «Start trusting the signer to execute this action», то на java.policies внимание вообще не будет обращаться?
А если нажмёт «не доверять», то тогда уже java.policies проверяться будут?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 484
360
#4
проверка осущ., но пермишенов по полиси, а ежели не доверять - но запрет
 
T

Timas

Гость
#5
C++:
FileInputStream in = new FileInputStream("pr.ini");

Properties properties = new Properties();
properties.load(in);
Собсно из Java агента для Lotus загружются настройки. Возникает ошибка: "Can't find resource for bundle java.util.PropertyResourceBundle, key file_operation_not_allowed Ran Java Agent Class".

Я так понимаю, что не разрешены операции с файлом pr.ini?

p.s. агент запускается на сервере, по таймеру. Если запускать агента не на сервере, а локально(т.е. берется локально pr.ini), то все ок.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 484
360
#6
я просто не сталкивался...
если на клиенте не менялся секурити для джава (и сталобыть на сервере он похож и дело не в нем) - то банально - нет прав у агента (рестриктед права)
 

VladSh

начинающий
Lotus team
11.12.2009
1 248
2
#7
Агент на клиенте прекрасно работал, но при запуске его на сервере такая же ерунда, - валится на совсем обычной строчке
<!--shcode--><pre><code class='java'>Properties p = System.getProperties();[/CODE]<!--QuoteBegin-StackTrace+-->
<table border="0" cellpadding="0" cellspacing="0" align="center" width="98%"> [tr] <td class="vbquote"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="75" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="50px"> [tr] <td class="vbquote" width="28" valign="top">
</td> <td class="vbquote" width="100%" style="background-image: url('style_images/ckr/quotes/quote-bg.gif'); background-position: center;" valign="middle"><span class="vbquote">Цитата:</span></td> <td class="vbquote" valign="top">
</td> [/tr] </table> </td> <td class="vbquote" align="left" style="background-image: url('style_images/ckr/quotes/quot-lr-bg.gif')" valign="bottom"></td><td class="vbquote" width="0" align="left" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="200"> [tr] <td class="vbquote" valign="top">
</td> <td class="vbquote" width="100%" style="background-image: url('style_images/ckr/quotes/quot-bye-bg.gif')" align="left" valign="middle" nowrap="nowrap"><span class="vbquote">(StackTrace)</span></td> <td class="vbquote" valign="top">
</td> [/tr] </table> </td><td class="vbquote" width="100%" align="right" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="100%"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" style="background-image: url('style_images/ckr/quotes/quot-top-bg.gif')" width="100%" valign="middle"></td> <td class="vbquote" align="left" valign="top">
</td> [/tr] </table> </td> [/tr] </table> </td> [/tr] </table> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quoting-left.gif')"></td> <td class="vbquotemain" width="100%" valign="top"></td> <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quoting-right.gif')"></td> [/tr] [tr] <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quot-left-bg.gif')"></td> <td class="vbquotemain" width="100%" valign="top"><!--QuoteEBegin-->[15C0:0073-17E0] 31.10.2012 17:31:43 Agent error: java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key access_properties_not_allowed
[15C0:0075-17E0] 31.10.2012 17:31:43 Agent error: at java.util.ResourceBundle.getObject(ResourceBundle.java:407)
[15C0:0077-17E0] 31.10.2012 17:31:43 Agent error: at java.util.ResourceBundle.getString(ResourceBundle.java:421)
[15C0:0079-17E0] 31.10.2012 17:31:43 Agent error: at lotus.notes.JavaString.getString(Unknown Source)
[15C0:007B-17E0] 31.10.2012 17:31:43 Agent error: at lotus.notes.AgentSecurityManager.checkPropertiesAccess(Unknown Source)
[15C0:007D-17E0] 31.10.2012 17:31:43 Agent error: at java.lang.System.getProperties(System.java:322)<!--QuoteEnd--></td> [/tr] [tr] [/tr] </table> </td> [/tr] </table>
<!--QuoteEEnd-->Коллеги, подскажите пожалуйста, как побороть!?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#8
Может быть, ответ здесь: "key access_properties_not_allowed"?
 

Кирилл Шваб

Well-Known Member
30.06.2006
145
4
#9
VladSh,

[15C0:0073-17E0] 31.10.2012 17:31:43 Agent error: java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key access_properties_not_allowed
Означает что не получилось найти "человеческое" описание ошибки access_properties_not_allowed, но причина не в этом.

[15C0:007B-17E0] 31.10.2012 17:31:43 Agent error: at lotus.notes.AgentSecurityManager.checkPropertiesAccess(Unknown Source)
[15C0:007D-17E0] 31.10.2012 17:31:43 Agent error: at java.lang.System.getProperties(System.java:322)
Надо добавить в java.policy:
1. разрешение на метод System.getProperties()
2. разрешения на чтение необходимых свойств (по умолчанию доступ открыт только к некоторым), если в коде потом читаются какие-то системные свойства
 

VladSh

начинающий
Lotus team
11.12.2009
1 248
2
#10
Кирилл Шваб
В java.policy вроде всё было... Спасибо за то, что всегда помогаете!

Почитал доку.. можно брать значение свойства прямо из System.
Ради эксперимента заменил
<!--shcode--><pre><code class='java'>Properties p = System.getProperties();
// ... = p.getProperty("java.version");
// ... = p.getProperty("java.class.version");[/CODE]на<!--shcode--><pre><code class='java'>// ... = System.getProperty("java.version");
// ... = System.getProperty("java.class.version");[/CODE]и прокатило!

Не знаю, почему его клинит если брать сначала getProperties(), но главное, что без него работает.