Hi
I am using commons-pool-1.3.jar with commons-dbcp-1.2.2.jar.
My program is using concurrent threads that each of them access the DB
through
BasicDataSource. If I use 5 concurrent threads, the program is running
without
any problem. The problem starts when I am using 10 threads:
Each thread is using the class ConnectionHelper to get a connection to
the DB:
------------------------------------------------------------------------------------
package dataAccess.util;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import org.w3c.dom.*;
import org.apache.commons.pool.*;
import org.apache.commons.pool.impl.*;
import org.apache.commons.dbcp.*;
import dataAccess.db.*;
import dataAccess.util.xml.*;
public class ConnectionHelper
{
private ConnectionHelper()
{
}
private static Hashtable<String,DataSource>iDataSources = null;
public static synchronized Connection getConnection(String
aJNDIName) throws Exception
{
if(iDataSources == null)
{
iDataSources = new Hashtable<String,DataSource>();
}
DataSource vDataSource = iDataSources.get(aJNDIName);
if(vDataSource==null)
{
vDataSource = buildDataSource(aJNDIName);
}
Connection vConnection = vDataSource.getConnection();
return vConnection;
}
private static DataSource buildDataSource(String aJNDIName) throws
Exception
{
BasicDataSource vBDS = new BasicDataSource();
String vXMLDSName =
aJNDIName.substring(aJNDIName.indexOf(":/")+1).toUpperCase()+"-ds.xml";
vXMLDSName = vXMLDSName.trim();
XMLHelper vXMLHelper = new XMLHelper();
Document vXMLDoc = vXMLHelper.retrieveXmlDocument(vXMLDSName);
Element vRoot = vXMLDoc.getDocumentElement();
NodeList vParamList =
vRoot.getElementsByTagName("local-tx-datasource");
Element vLocalTxDataSource = (Element)vParamList.item(0);
String vURL =
vXMLHelper.getFirstValue(vLocalTxDataSource,"connection-url");
String vConnectionProperty =
vXMLHelper.getFirstValue(vLocalTxDataSource,"connection-property");
Element vPropertyElement =
(Element)vXMLHelper.selectFirstNode(vXMLDoc,"/datasources/local-tx-datasource/connection-property");
if(vPropertyElement!=null)
{
String vLibraryName =
vXMLHelper.getAttributeAsString(vPropertyElement,"name");
vURL = vURL + ";" + vLibraryName + "=" + vConnectionProperty;
}
vBDS.setUrl(vURL);
String vDriverClassName =
vXMLHelper.getFirstValue(vLocalTxDataSource,"driver-class");
vBDS.setDriverClassName(vDriverClassName);
String vUserName =
vXMLHelper.getFirstValue(vLocalTxDataSource,"user-name");
vBDS.setUsername(vUserName);
String vPassword =
vXMLHelper.getFirstValue(vLocalTxDataSource,"password");
vBDS.setPassword(vPassword);
String vMaxPoolSize =
vXMLHelper.getFirstValue(vLocalTxDataSource,"max-pool-size");
if(vMaxPoolSize.length()>0)
{
vBDS.setMaxActive(Integer.parseInt(vMaxPoolSize));
}
// Create a PoolableDataSource
ObjectPool vConnectionPool = new GenericObjectPool(null);
ConnectionFactory vConnectionFactory = new
DataSourceConnectionFactory(vBDS);
PoolableObjectFactory poolableConnectionFactory = new
PoolableConnectionFactory(vConnectionFactory,vConnectionPool,null,null,false,true);
DataSource vDataSource = new PoolingDataSource(vConnectionPool);
iDataSources.put(aJNDIName,vDataSource);
return vDataSource;
}
public static void trace(Object aMsg)
{
System.out.println("[ConnectionHelper] " + aMsg);
}
}
------------------------------------------------------------------------------------
I keep all the DataSources in a Hashtable, so I can re-use it when needed.
When running the program with the threads, it stops executing after a while.
From the FullThreadDump I receive:
------------------------------------------------------------------------------------
Connecting to localhost:1090
Full Java thread dump with locks info
"JMX server connection timeout 24" Id=24 in TIMED_WAITING on lock=[I@124d504
at java.lang.Object.wait(Native Method)
at
com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:150)
at java.lang.Thread.run(Thread.java:619)
Locked synchronizers: count = 0
"RMI TCP Connection(2)-10.0.0.1" Id=23 in RUNNABLE
at sun.management.ThreadImpl.dumpThreads0(Native Method)
at sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:374)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:167)
at
com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:96)
at
com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:33)
at
com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:208)
at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:120)
at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:262)
at javax.management.StandardMBean.invoke(StandardMBean.java:391)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
at
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1426)
at
javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
at
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1264)
at
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1359)
at
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Locked synchronizers: count = 1
- java.util.concurrent.locks.ReentrantLock$NonfairSync@11d329d
"RMI Scheduler(0)" Id=22 in TIMED_WAITING on
lock=java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@1e61026
at sun.misc.Unsafe.park(Native Method)
at
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1963)
at java.util.concurrent.DelayQueue.take(DelayQueue.java:164)
at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:582)
at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:575)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:946)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:906)
at java.lang.Thread.run(Thread.java:619)
Locked synchronizers: count = 0
"RMI TCP Connection(1)-127.0.0.1" Id=21 in RUNNABLE (running in native)
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
- locked java.io.BufferedInputStream@d507d3
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:517)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Locked synchronizers: count = 1
- java.util.concurrent.locks.ReentrantLock$NonfairSync@1f4c4a3
"Thread-10" Id=20 in BLOCKED on lock=java.lang.Class@99d56b
owned by Thread-4 Id=14
at
dataAccess.util.ConnectionHelper.getConnection(ConnectionHelper.java:26)
at
dataAccess.util.DataAccessLocalImpl.getConnection(DataAccessLocalImpl.java:25)
at
dataAccess.db.BaseDataAccess.getPrimaryKeysColumnsNames(BaseDataAccess.java:1215)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1321)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1298)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1272)
at
dataAccess.util.CreateStatement.createStatement(CreateStatement.java:63)
at dataAccess.util.CreateStatement.process(CreateStatement.java:48)
at
dataAccess.db.thread.query.QueryRunnerThread.run(QueryRunnerThread.java:19)
Locked synchronizers: count = 0
"Thread-9" Id=19 in BLOCKED on lock=java.lang.Class@99d56b
owned by Thread-4 Id=14
at
dataAccess.util.ConnectionHelper.getConnection(ConnectionHelper.java:26)
at
dataAccess.util.DataAccessLocalImpl.getConnection(DataAccessLocalImpl.java:25)
at
dataAccess.db.BaseDataAccess.getPrimaryKeysColumnsNames(BaseDataAccess.java:1215)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1321)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1298)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1272)
at
dataAccess.util.CreateStatement.createStatement(CreateStatement.java:63)
at dataAccess.util.CreateStatement.process(CreateStatement.java:48)
at
dataAccess.db.thread.query.QueryRunnerThread.run(QueryRunnerThread.java:19)
Locked synchronizers: count = 0
"Thread-8" Id=18 in BLOCKED on lock=java.lang.Class@99d56b
owned by Thread-4 Id=14
at
dataAccess.util.ConnectionHelper.getConnection(ConnectionHelper.java:26)
at
dataAccess.util.DataAccessLocalImpl.getConnection(DataAccessLocalImpl.java:25)
at
dataAccess.db.BaseDataAccess.getPrimaryKeysColumnsNames(BaseDataAccess.java:1215)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1321)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1298)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1272)
at
dataAccess.util.CreateStatement.createStatement(CreateStatement.java:63)
at dataAccess.util.CreateStatement.process(CreateStatement.java:48)
at
dataAccess.db.thread.query.QueryRunnerThread.run(QueryRunnerThread.java:19)
Locked synchronizers: count = 0
"Thread-7" Id=17 in BLOCKED on lock=java.lang.Class@99d56b
owned by Thread-4 Id=14
at
dataAccess.util.ConnectionHelper.getConnection(ConnectionHelper.java:26)
at
dataAccess.util.DataAccessLocalImpl.getConnection(DataAccessLocalImpl.java:25)
at
dataAccess.db.BaseDataAccess.getPrimaryKeysColumnsNames(BaseDataAccess.java:1215)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1321)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1298)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1272)
at
dataAccess.util.CreateStatement.createStatement(CreateStatement.java:63)
at dataAccess.util.CreateStatement.process(CreateStatement.java:48)
at
dataAccess.db.thread.query.QueryRunnerThread.run(QueryRunnerThread.java:19)
Locked synchronizers: count = 0
"Thread-6" Id=16 in BLOCKED on lock=java.lang.Class@99d56b
owned by Thread-4 Id=14
at
dataAccess.util.ConnectionHelper.getConnection(ConnectionHelper.java:26)
at
dataAccess.util.DataAccessLocalImpl.getConnection(DataAccessLocalImpl.java:25)
at
dataAccess.db.BaseDataAccess.getPrimaryKeysColumnsNames(BaseDataAccess.java:1215)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1321)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1298)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1272)
at
dataAccess.util.CreateStatement.createStatement(CreateStatement.java:63)
at dataAccess.util.CreateStatement.process(CreateStatement.java:48)
at
dataAccess.db.thread.query.QueryRunnerThread.run(QueryRunnerThread.java:19)
Locked synchronizers: count = 0
"Thread-5" Id=15 in BLOCKED on lock=java.lang.Class@99d56b
owned by Thread-4 Id=14
at
dataAccess.util.ConnectionHelper.getConnection(ConnectionHelper.java:26)
at
dataAccess.util.DataAccessLocalImpl.getConnection(DataAccessLocalImpl.java:25)
at
dataAccess.db.BaseDataAccess.getPrimaryKeysColumnsNames(BaseDataAccess.java:1215)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1321)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1298)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1272)
at
dataAccess.util.CreateStatement.createStatement(CreateStatement.java:63)
at dataAccess.util.CreateStatement.process(CreateStatement.java:48)
at
dataAccess.db.thread.query.QueryRunnerThread.run(QueryRunnerThread.java:19)
Locked synchronizers: count = 0
"Thread-4" Id=14 in WAITING on
lock=org.apache.commons.pool.impl.GenericObjectPool@18a80d4
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:942)
at
org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
at
dataAccess.util.ConnectionHelper.getConnection(ConnectionHelper.java:37)
- locked java.lang.Class@99d56b
at
dataAccess.util.DataAccessLocalImpl.getConnection(DataAccessLocalImpl.java:25)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1284)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1272)
at
dataAccess.util.CreateStatement.createStatement(CreateStatement.java:63)
at dataAccess.util.CreateStatement.process(CreateStatement.java:48)
at
dataAccess.db.thread.query.QueryRunnerThread.run(QueryRunnerThread.java:19)
Locked synchronizers: count = 0
"Thread-3" Id=13 in BLOCKED on lock=java.lang.Class@99d56b
owned by Thread-4 Id=14
at
dataAccess.util.ConnectionHelper.getConnection(ConnectionHelper.java:26)
at
dataAccess.util.DataAccessLocalImpl.getConnection(DataAccessLocalImpl.java:25)
at
dataAccess.db.BaseDataAccess.getPrimaryKeysColumnsNames(BaseDataAccess.java:1215)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1321)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1298)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1272)
at
dataAccess.util.CreateStatement.createStatement(CreateStatement.java:63)
at dataAccess.util.CreateStatement.process(CreateStatement.java:48)
at
dataAccess.db.thread.query.QueryRunnerThread.run(QueryRunnerThread.java:19)
Locked synchronizers: count = 0
"Thread-2" Id=12 in BLOCKED on lock=java.lang.Class@99d56b
owned by Thread-4 Id=14
at
dataAccess.util.ConnectionHelper.getConnection(ConnectionHelper.java:26)
at
dataAccess.util.DataAccessLocalImpl.getConnection(DataAccessLocalImpl.java:25)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1284)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1272)
at
dataAccess.util.CreateStatement.createStatement(CreateStatement.java:63)
at dataAccess.util.CreateStatement.process(CreateStatement.java:48)
at
dataAccess.db.thread.query.QueryRunnerThread.run(QueryRunnerThread.java:19)
Locked synchronizers: count = 0
"Thread-1" Id=11 in BLOCKED on lock=java.lang.Class@99d56b
owned by Thread-4 Id=14
at
dataAccess.util.ConnectionHelper.getConnection(ConnectionHelper.java:26)
at
dataAccess.util.DataAccessLocalImpl.getConnection(DataAccessLocalImpl.java:25)
at
dataAccess.db.BaseDataAccess.getPrimaryKeysColumnsNames(BaseDataAccess.java:1215)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1321)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1298)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1272)
at
dataAccess.util.CreateStatement.createStatement(CreateStatement.java:63)
at dataAccess.util.CreateStatement.process(CreateStatement.java:48)
at
dataAccess.db.thread.query.QueryRunnerThread.run(QueryRunnerThread.java:19)
Locked synchronizers: count = 0
"RMI TCP Accept-1090" Id=10 in RUNNABLE (running in native)
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
- locked java.net.SocksSocketImpl@101da9
at java.net.ServerSocket.implAccept(ServerSocket.java:453)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
at java.lang.Thread.run(Thread.java:619)
Locked synchronizers: count = 0
"RMI TCP Accept-0" Id=9 in RUNNABLE (running in native)
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
- locked java.net.SocksSocketImpl@b6421
at java.net.ServerSocket.implAccept(ServerSocket.java:453)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
at java.lang.Thread.run(Thread.java:619)
Locked synchronizers: count = 0
"Attach Listener" Id=5 in RUNNABLE
Locked synchronizers: count = 0
"Signal Dispatcher" Id=4 in RUNNABLE
Locked synchronizers: count = 0
"Finalizer" Id=3 in WAITING on
lock=java.lang.ref.ReferenceQueue$Lock@1dacb2b
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
Locked synchronizers: count = 0
"Reference Handler" Id=2 in WAITING on
lock=java.lang.ref.Reference$Lock@15092c0
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
Locked synchronizers: count = 0
"main" Id=1 in RUNNABLE
at java.lang.Thread.isAlive(Native Method)
at
dataAccess.db.thread.query.QueryRunnerThread.isRunning(QueryRunnerThread.java:30)
at
dataAccess.db.thread.query.ConcurrentQuery.checkForCompletions(ConcurrentQuery.java:95)
at
dataAccess.db.thread.query.ConcurrentQuery.resolve(ConcurrentQuery.java:116)
at
dataAccess.db.cmd.CreateStatementFactory.process(CreateStatementFactory.java:67)
at
dataAccess.db.cmd.CreateStatementFactory.<init>(CreateStatementFactory.java:35)
at
dataAccess.db.cmd.DB2SerFactory.createConverters(DB2SerFactory.java:50)
at dataAccess.db.cmd.DB2SerFactory.<init>(DB2SerFactory.java:23)
at
dataAccess.db.cmd.DB2SerFactoryParam.<init>(DB2SerFactoryParam.java:49)
at
dataAccess.db.cmd.DB2SerFactoryParam.main(DB2SerFactoryParam.java:110)
Locked synchronizers: count = 0
No deadlock found.
------------------------------------------------------------------------------------
Pay attention to "Thread-4":
------------------------------------------------------------------------------------
"Thread-4" Id=14 in WAITING on
lock=org.apache.commons.pool.impl.GenericObjectPool@18a80d4
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:942)
at
org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
at
dataAccess.util.ConnectionHelper.getConnection(ConnectionHelper.java:37)
- locked java.lang.Class@99d56b
at
dataAccess.util.DataAccessLocalImpl.getConnection(DataAccessLocalImpl.java:25)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1284)
at dataAccess.db.BaseDataAccess.getFullColumns(BaseDataAccess.java:1272)
at
dataAccess.util.CreateStatement.createStatement(CreateStatement.java:63)
at dataAccess.util.CreateStatement.process(CreateStatement.java:48)
at
dataAccess.db.thread.query.QueryRunnerThread.run(QueryRunnerThread.java:19)
------------------------------------------------------------------------------------
Can you tell me what should I do to solve this problem?
Regards
Philip
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
|