2015-11-03 51 views
0

當我嘗試ping從Glassfish的3管理控制檯的Oracle 11g我得到以下異常:不能與Glassfish的JDBC連接池連接到Oracle,的AccessControlException被拋出

Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "javax.net.ssl.keyStorePassword" "read") 
     at com.sun.enterprise.security.ssl.SSLUtils.checkPermission(SSLUtils.java:336) 
     at com.sun.enterprise.security.J2EESecurityManager.checkProperty(J2EESecurityManager.java:146) 
     at com.sun.enterprise.security.J2EESecurityManager.checkPropertyAccess(J2EESecurityManager.java:131) 
     at java.lang.System.getProperty(System.java:744) 
     at oracle.jdbc.driver.PhysicalConnection$1.run(PhysicalConnection.java:3117) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at oracle.jdbc.driver.PhysicalConnection.getSystemProperty(PhysicalConnection.java:3113) 
     at oracle.jdbc.driver.PhysicalConnection.readConnectionProperties(PhysicalConnection.java:1300) 
     at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:517) 
     at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:228) 
     at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) 
     at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521) 
     at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280) 
     at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207) 
     at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:157) 
     at com.sun.gjc.spi.DSManagedConnectionFactory.createManagedConnection(DSManagedConnectionFactory.java:115) 
     at com.sun.enterprise.resource.allocator.LocalTxConnectorAllocator.createResource(LocalTxConnectorAllocator.java:87) 
     at com.sun.enterprise.resource.pool.ConnectionPool.createSingleResource(ConnectionPool.java:907) 
     ... 61 more 

獨立的應用程序使用相同的JDBC驅動程序工作得很好。我在本地Ubuntu 12.04盒子上運行Glassfish 3.1.2,並將Oracle 11g XE部署爲Docker鏡像。我停止了AppArmor,沒有防火牆處於活動狀態,也不知道它與SSL有什麼關係。我也嘗試向Glassfish server.policy和JDK java.policy文件添加javax.net.ssl.keyStorePassword權限,但沒有解決問題。

相同的Glassfish實例有一個MySQL池,並沒有這樣的錯誤。可能需要在Oracle服務器上配置一些東西才能使其工作?

+0

https://docs.oracle.com/cd/E21764_01/web.1111/e13753/usedriver.htm#JDBCD115 –

回答

0

通過將Oracle JDBC驅動程序jar文件放置到../glassfish/lib而不是../domain1/lib解決了此錯誤。