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]