Good afternoon, ladies and gentlemen,
I have biult a web application using Hibernate for java. The application works fine on my local machine without SecurityManager, but when it is deployed on the remote server, the following exception is thrown:
Sep 23, 2010 3:07:12 PM org.apache.catalina.core.StandardWrapperValve invoke INFO: java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java:1512) at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:114) at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at java.sql.DriverManager.getCallerClass(DriverManager.java:477) at java.sql.DriverManager.getConnection(DriverManager.java:576) at java.sql.DriverManager.getConnection(DriverManager.java:185) at org.apache.jsp.dbtester_jsp._jspService(dbtester_jsp.java:84) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) ....................and so on.....................
the remote server runs SecurityManager which sims to dislike access to sun.jdbc.odbc package. Sun also does not recommend direct use of any classes in the "sun." namespace.
I am using custom connection provider which does as little as: //during initialisation Class.forName(driver);
//later on connection request Connection conn = DriverManager.getConnection(connURL, username, password); conn.setAutoCommit(true); return conn;
I am not implementing/using connection pooling as it makes no sense due to short configured connection timeout on the server. The same situation also occured with the default hibernate pooling mechanism, and with c3p0.
my hibernate.cfg.xml:
<hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost/database_name</property> <property name="hibernate.connection.username">user</property> <property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.provider_class">snowhouse.UnpooledConnectionProvider</property>
<mapping resource="snowhouse/Staff.hbm.xml"/> <mapping resource........ </session-factory> </hibernate-configuration>
My question in this case is whether Hibernate attempts to use the mentioned package at runtime, or have I done something bizzare with this? Any suggestions??
|