Доступ запрещен при чтении java.util.Permissions - PullRequest
0 голосов
/ 09 июня 2019

мы используем websphere 17 для веб-приложения, основанного на eclipse-link в качестве постоянного уровня.Приложение работает нормально, но через некоторое время (во время действий пользователя) мы получили такую ​​ошибку, которая заставляет нас перезапустить сервер.

org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Access denied ("java.util.PropertyPermission" "oracle.jdbc.sqlTranslationProfile" "read")
Error Code: 0

Что означает эта ошибка?

Из того, что я понял, эта ошибка происходит из-за отсутствия доступа для чтения к этому свойству.Но это может быть связано с менеджером безопасности.Проблема в том, что я ожидал бы любого менеджера безопасности, установленного websphere, и наверняка мы не создаем никакого специального менеджера безопасности.Менеджер безопасности вообще не должен существовать в нашем приложении.Итак, кто это устанавливает?Или я что-то упустил?

Ниже приведена полная трассировка стека:

Internal Exception: java.sql.SQLException: Access denied ("java.util.PropertyPermission" "oracle.jdbc.sqlTranslationProfile" "read")
Error Code: 0
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:316)
    at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:147)
    at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.setOrDetectDatasource(DatabaseSessionImpl.java:207)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:760)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:265)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:731)
    ... 83 common frames omitted
Caused by: java.sql.SQLException: Access denied ("java.util.PropertyPermission" "oracle.jdbc.sqlTranslationProfile" "read")
    at com.ibm.ws.rsadapter.AdapterUtil.toSQLException(AdapterUtil.java:822)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:152)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:116)
    at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
    ... 88 common frames omitted
Caused by: javax.resource.spi.ResourceAllocationException: Access denied ("java.util.PropertyPermission" "oracle.jdbc.sqlTranslationProfile" "read")
    at com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1576)
    at com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1228)
    at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:1434)
    at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:573)
    at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:309)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:143)
    ... 90 common frames omitted
Caused by: java.security.AccessControlException: Access denied ("java.util.PropertyPermission" "oracle.jdbc.sqlTranslationProfile" "read")
    at java.security.AccessController.throwACE(AccessController.java:176)
    at java.security.AccessController.checkPermissionHelper(AccessController.java:237)
    at java.security.AccessController.checkPermission(AccessController.java:373)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:562)
    at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1307)
    at java.lang.System.getProperty(System.java:456)
    at oracle.jdbc.driver.GeneratedPhysicalConnection$1.run(GeneratedPhysicalConnection.java:84)
    at java.security.AccessController.doPrivileged(AccessController.java:640)
    at oracle.jdbc.driver.GeneratedPhysicalConnection.getSystemProperty(GeneratedPhysicalConnection.java:82)
    at oracle.jdbc.driver.GeneratedPhysicalConnection.getSystemPropertySqlTranslationProfile(GeneratedPhysicalConnection.java:46)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:555)
    at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:317)
    at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:241)
    at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:164)
    at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:102)
    at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:79)
    at com.ibm.ws.rsadapter.impl.DatabaseHelper$1.run(DatabaseHelper.java:949)
    at java.security.AccessController.doPrivileged(AccessController.java:696)
    at com.ibm.ws.rsadapter.impl.DatabaseHelper.getPooledConnection(DatabaseHelper.java:958)
    at com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl.getConnection(WSManagedConnectionFactoryImpl.java:810)
    at com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:656)
    at com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1354)
    ... 95 common frames omitted

спасибо за любую помощь,

1 Ответ

0 голосов
/ 10 июня 2019

Свойство websphere.java.security в bootstrap.properties управляет включением Java 2 Security в Liberty.

При запуске с включенной Java 2 Security приведен пример фрагмента конфигурации сервера (для файла server.xml)о том, как предоставить разрешение драйверу JDBC oracle для чтения свойств системы, которые начинаются с "oracle.jdbc.",

<javaPermission codebase="C:/drivers/oracle/ojdbc7.jar" className="java.util.PropertyPermission" actions="read" name="oracle.jdbc.*"/>
...