You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2007/01/05 03:27:57 UTC
svn commit: r492863 - in
/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms:
PlatformOracle9iImpl.java PlatformOracleImpl.java
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: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org