Author: arminw Date: Thu Jan 4 18:27:57 2007 New Revision: 492863 URL: http://svn.apache.org/viewvc?view=rev&rev=492863 Log: refactoring of implementation, with latest thin-driver (tested against OracleXE) the 2/4KByte seems to be fixed
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracle9iImpl.java db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracleImpl.java Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracle9iImpl.java URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracle9iImpl.java?view=diff&rev=492863&r1=492862&r2=492863 ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracle9iImpl.java (original) +++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracle9iImpl.java Thu Jan 4 18:27:57 2007 @@ -90,6 +90,8 @@ protected static String JBOSS_CONN_NAME = "org.jboss.resource.adapter.jdbc.WrappedConnection"; protected static String ORA_CONNECTION_CLASS_NAME = "oracle.jdbc.OracleConnection"; protected static String ORA_STATEMENT_CLASS_NAME = "oracle.jdbc.OraclePreparedStatement"; + protected static String ORA_BLOB_CLASS_NAME = "oracle.sql.BLOB"; + protected static String ORA_CLOB_CLASS_NAME = "oracle.sql.CLOB"; protected Class JBOSS_CONN_CLASS; protected Class ORA_CONN_CLASS; @@ -173,14 +175,15 @@ } catch(ClassNotFoundException e) { - log.info("Can't access Oracle specific driver Connection/Statement classes", e); + log.info("Can't access Oracle specific driver Connection/Statement classes using class names: " + + ORA_CONNECTION_CLASS_NAME + " and " + ORA_STATEMENT_CLASS_NAME, e); } try { - ORA_CLOB_CLASS = ClassHelper.getClass("oracle.sql.CLOB", false); - ORA_BLOB_CLASS = ClassHelper.getClass("oracle.sql.BLOB", false); + ORA_CLOB_CLASS = ClassHelper.getClass(ORA_CLOB_CLASS_NAME, false); + ORA_BLOB_CLASS = ClassHelper.getClass(ORA_BLOB_CLASS_NAME, false); PARAM_TYPE_INT_ORACLOB = new Class[]{ Integer.TYPE, ORA_CLOB_CLASS }; PARAM_TYPE_INT_ORABLOB = new Class[]{ Integer.TYPE, ORA_BLOB_CLASS }; METHOD_SET_CLOB = ClassHelper.getMethod(ORA_PS_CLASS, "setCLOB", PARAM_TYPE_INT_ORACLOB); @@ -188,7 +191,8 @@ } catch(ClassNotFoundException e) { - log.info("Can't use Oracle specific BLOB/CLOB classes", e); + log.info("Can't use Oracle specific BLOB/CLOB classes using class names: " + + ORA_BLOB_CLASS_NAME + ", " + ORA_CLOB_CLASS_NAME, e); } try @@ -373,7 +377,10 @@ // Set number of cached statements and enable implicit caching METHOD_SET_STATEMENT_CACHE_SIZE.invoke(oraConn, paramStatementCacheSize); METHOD_SET_IMPLICIT_CACHING_ENABLED.invoke(oraConn, PARAM_BOOLEAN_TRUE); - if(log.isDebugEnabled()) log.debug("Oracle's native implicit statement caching enabled for connection " + conn); + if(log.isDebugEnabled()) + { + log.debug("Oracle's native implicit statement caching enabled for connection " + conn); + } } catch (Exception e) { @@ -386,6 +393,13 @@ } } } + else + { + if(log.isDebugEnabled()) + { + log.debug("Can't unwrap connection, statement caching and row prefetching can't be used"); + } + } } /** @@ -534,7 +548,6 @@ } else if (sqlType == Types.CLOB && oraLargeLobSupportAvailable && value instanceof String) { - // TODO: If using Oracle update batching with the thin driver, throw exception on 4k limit try { Object clob = Oracle9iLobHandler.createCLOBFromString(oraConn, (String) value); @@ -547,7 +560,6 @@ } else if (sqlType == Types.BLOB && oraLargeLobSupportAvailable && value instanceof byte[]) { - // TODO: If using Oracle update batching with the thin driver, throw exception on 2k limit try { Object blob = Oracle9iLobHandler.createBLOBFromByteArray(oraConn, (byte[]) value); Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracleImpl.java URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracleImpl.java?view=diff&rev=492863&r1=492862&r2=492863 ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracleImpl.java (original) +++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformOracleImpl.java Thu Jan 4 18:27:57 2007 @@ -15,33 +15,32 @@ * limitations under the License. */ -import org.apache.ojb.broker.util.logging.Logger; -import org.apache.ojb.broker.util.logging.LoggerFactory; -import org.apache.ojb.broker.util.ClassHelper; -import org.apache.ojb.broker.util.sequence.SequenceManagerHelper; -import org.apache.ojb.broker.metadata.FieldDescriptor; -import org.apache.ojb.broker.metadata.JdbcConnectionDescriptor; -import org.apache.ojb.broker.PersistenceBrokerSQLException; -import org.apache.commons.lang.SerializationUtils; - import java.io.ByteArrayInputStream; import java.io.InputStreamReader; import java.io.Reader; -import java.io.StringReader; import java.io.Serializable; +import java.io.StringReader; import java.lang.reflect.Field; import java.security.AccessController; import java.security.PrivilegedAction; +import java.sql.Blob; import java.sql.CallableStatement; import java.sql.Connection; -import java.sql.DatabaseMetaData; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; -import java.sql.Blob; import java.util.Properties; +import org.apache.commons.lang.SerializationUtils; +import org.apache.ojb.broker.PersistenceBrokerSQLException; +import org.apache.ojb.broker.metadata.FieldDescriptor; +import org.apache.ojb.broker.metadata.JdbcConnectionDescriptor; +import org.apache.ojb.broker.util.ClassHelper; +import org.apache.ojb.broker.util.logging.Logger; +import org.apache.ojb.broker.util.logging.LoggerFactory; +import org.apache.ojb.broker.util.sequence.SequenceManagerHelper; + /** * This class is a concrete implementation of <code>Platform</code>. Provides an implementation * that works around some issues with Oracle in general and Oracle's Thin driver in particular. @@ -457,34 +456,34 @@ stmt.registerOutParameter(position, ORACLE_JDBC_TYPE_CURSOR); } - /** - * Checks if the supplied connection is using the Oracle thin driver. - * - * @param conn database connection for which to check JDBC-driver - * @return <code>true</code> if the connection is using Oracle thin driver, <code>false</code> - * otherwise. - */ - protected static boolean isUsingOracleThinDriver(Connection conn) - { - if (conn == null) - { - return false; - } - final DatabaseMetaData dbMetaData; - final String dbUrl; - try - { - dbMetaData = conn.getMetaData(); - dbUrl = dbMetaData.getURL(); - if (dbUrl != null && dbUrl.startsWith(THIN_URL_PREFIX)) - { - return true; - } - } - catch (Exception e) - { - // ignore it - } - return false; - } +// /** +// * Checks if the supplied connection is using the Oracle thin driver. +// * +// * @param conn database connection for which to check JDBC-driver +// * @return <code>true</code> if the connection is using Oracle thin driver, <code>false</code> +// * otherwise. +// */ +// protected static boolean isUsingOracleThinDriver(Connection conn) +// { +// if (conn == null) +// { +// return false; +// } +// final DatabaseMetaData dbMetaData; +// final String dbUrl; +// try +// { +// dbMetaData = conn.getMetaData(); +// dbUrl = dbMetaData.getURL(); +// if (dbUrl != null && dbUrl.startsWith(THIN_URL_PREFIX)) +// { +// return true; +// } +// } +// catch (Exception e) +// { +// // ignore it +// } +// return false; +// } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]