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;
+// }
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.