ARCO and Oracle 10g

ARCo & Oracle jdbc drivers

ARCo supports Oracle Database 10g, however there is a known problem with the jdbc drivers of Oracle Database 10 Release 2 (also known as Oracle 10.2). The authors of the jdbc drivers added an optional sealed option to the manifest file of the driver's jar file. Package sealing is important for security, because it restricts access to package-protected members to only those classes defined in the package that originated from the same JAR file. ARCo module is a web-based tool deployed on the Sun Web Console, which use it's class loader to load the class from the jdbc driver jar file, and due to this security protection there is thrown this exception:

Sealing violation loading oracle.jdbc.pool.OracleDataSource : Package oracle.jdbc.pool is sealed.
(java.lang.SecurityException)
at
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1632)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:937)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1372)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1254)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:620)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1643)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:937)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1372)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1254)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
com.sun.grid.arco.sql.OracleSQLGenerator.createDatasource(OracleSQLGenerator.java:47)
com.sun.grid.arco.sql.ArcoDbConnectionPool.init(ArcoDbConnectionPool.java:125)
com.sun.grid.arco.sql.ArcoDbConnectionPool.getConnection(ArcoDbConnectionPool.java:164)
com.sun.grid.arco.sql.ArcoDbConnectionPool.getViewList(ArcoDbConnectionPool.java:211)
com.sun.grid.arco.web.arcomodule.query.SimplePropertySheetModel.createChild(SimplePropertySheetModel.java:89)
com.sun.grid.arco.web.arcomodule.query.SimpleTab.createChild(SimpleTab.java:89)
com.iplanet.jato.view.ContainerViewBase.ensureChild(ContainerViewBase.java:187)

Please refer to http://java.sun.com/javase/6/docs/technotes/guides/extensions/spec.html#sealing for more information about sealed option of the jar files.

Solution

To avoid this problem we can offer these possibilities so far: