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)
To avoid this problem we can offer these possibilities so far:
Please download the appropriate driver from http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
The original content of the MANIFEST file of ojdbc14.jar file looks like:
Manifest-Version: 1.0
Specification-Title: Oracle JDBC driver classes for use with JDK14
Sealed: true
Created-By: 1.4.2_08 (Sun Microsystems Inc.)
Implementation-Title: ojdbc14.jar
Specification-Vendor: Oracle Corporation
Specification-Version: Oracle JDBC Driver version - "10.2.0.1.0"
Implementation-Version: Oracle JDBC Driver version - "10.2.0.1.0"
Implementation-Vendor: Oracle Corporation
Implementation-Time: Wed Jun 22 18:55:48 2005
Name: oracle/sql/converter/
Sealed: false
Name: oracle/sql/
Sealed: false
Name: oracle/sql/converter_xcharset/
Sealed: false
To run ARCo with this driver you should remove the sealed option from the MANIFEST file, so the result looks like:
Manifest-Version: 1.0
Specification-Title: Oracle JDBC driver classes for use with JDK14
Created-By: 1.4.2_08 (Sun Microsystems Inc.)
Implementation-Title: ojdbc14.jar
Specification-Vendor: Oracle Corporation
Specification-Version: Oracle JDBC Driver version - "10.2.0.1.0"
Implementation-Version: Oracle JDBC Driver version - "10.2.0.1.0"
Implementation-Vendor: Oracle Corporation
Implementation-Time: Wed Jun 22 18:55:48 2005