Svi podaci su ispod, ima li neko ideju o cemu se radi?
Naime, napravio sam applet za igranje Preferansa i sinoc dok smo ga testirali tri sata je sve radilo kako treba. Onda, odjednom, na sasvim obicnom brisanju jednog reda iz jedne tabele desila se sledeca greska:
Code:
Exception in thread "Thread-5" org.hibernate.exception.GenericJDBCException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
at $Proxy0.beginTransaction(Unknown Source)
at cope.pref.hibernate.util.HibernateUtil.createCriteria(Unknown Source)
at cope.pref.balkan.room.db.RoomDBUtil$1.run(Unknown Source)
at cope.pref.balkan.room.db.RoomDBUtil.playerLeftRoom(Unknown Source)
at cope.pref.balkan.room.PrefRoom.leftRoom(Unknown Source)
at cope.pref.balkan.room.PrefRoom.receiveRoomClientEvent(Unknown Source)
at cope.pref.balkan.room.net.RoomServer.fireRoomClientEvent(Unknown Source)
at cope.pref.balkan.room.net.RoomServer.run(Unknown Source)
Caused by: java.sql.SQLException: An SQLException was provoked by the following failure: java.lang.InterruptedException
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65)
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:62)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:531)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:35)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
... 16 more
Caused by: java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1315)
at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
... 19 more
Exception in thread "Thread-5" org.hibernate.exception.GenericJDBCException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
at $Proxy0.beginTransaction(Unknown Source)
at cope.pref.hibernate.util.HibernateUtil.createCriteria(Unknown Source)
at cope.pref.balkan.room.db.RoomDBUtil$1.run(Unknown Source)
at cope.pref.balkan.room.db.RoomDBUtil.playerLeftRoom(Unknown Source)
at cope.pref.balkan.room.PrefRoom.leftRoom(Unknown Source)
at cope.pref.balkan.room.PrefRoom.receiveRoomClientEvent(Unknown Source)
at cope.pref.balkan.room.net.RoomServer.fireRoomClientEvent(Unknown Source)
at cope.pref.balkan.room.net.RoomServer.run(Unknown Source)
Caused by: java.sql.SQLException: An SQLException was provoked by the following failure: java.lang.InterruptedException
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65)
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:62)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:531)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:35)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
... 16 more
Caused by: java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1315)
at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
... 19 more
=================================================================================================
Metod gde se greska desila je:
Code:
public static void playerLeftRoom(final String username)
{
Runnable runnable = new Runnable()
{
public void run()
{
Criteria crit = HibernateUtil.createCriteria(RoomUser.class);
crit.setFetchMode("user", FetchMode.DEFAULT);
crit.createCriteria("user", "user");
crit.add(Expression.eq("user.username", username));
List list = crit.list();
for (Object object : list)
{
if (object instanceof RoomUser)
{
RoomUser dbRoomUser = (RoomUser) object;
HibernateUtil.delete(dbRoomUser);
}
}
HibernateUtil.closeSession();
}
};
runnable.run();
}
public static void playerLeftRoom(final String username)
{
Runnable runnable = new Runnable()
{
public void run()
{
Criteria crit = HibernateUtil.createCriteria(RoomUser.class);
crit.setFetchMode("user", FetchMode.DEFAULT);
crit.createCriteria("user", "user");
crit.add(Expression.eq("user.username", username));
List list = crit.list();
for (Object object : list)
{
if (object instanceof RoomUser)
{
RoomUser dbRoomUser = (RoomUser) object;
HibernateUtil.delete(dbRoomUser);
}
}
HibernateUtil.closeSession();
}
};
runnable.run();
}
=================================================================================================
A klasa HibernateUtil je:
Code:
package cope.pref.hibernate.util;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.beans.PropertyVetoException;
import java.io.ByteArrayOutputStream;
import java.util.List;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Expression;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public final class HibernateUtil
{
private static SessionFactory sessionFactory = null;
private static final String DRIVER = "org.postgresql.Driver";
private static final String JDBC_URL = "jdbc:postgresql://localhost:5432/preferans";
private static final String USER ...
private static final String PASSWORD ...
static
{
init();
}
public static Object load(Class cls, Long id)
{
final Session session = HibernateUtil.getSession();
session.beginTransaction();
final Object obj = session.load(cls, id);
session.getTransaction().commit();
return obj;
}
public static void delete(Object obj)
{
final Session session = getSession();
session.beginTransaction();
session.delete(obj);
session.getTransaction().commit();
}
public static void save(Object obj)
{
final Session session = getSession();
session.beginTransaction();
session.save(obj);
session.getTransaction().commit();
}
public static void saveOrUpdate(Object obj)
{
final Session session = getSession();
session.beginTransaction();
session.saveOrUpdate(obj);
session.getTransaction().commit();
}
public static void update(Object obj)
{
final Session session = getSession();
session.beginTransaction();
session.update(obj);
session.getTransaction().commit();
}
public static Criteria createCriteria(Class cls)
{
if (sessionFactory.isClosed()) init();
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
return session.createCriteria(cls);
}
public static Session getSession()
{
if (sessionFactory.isClosed()) init();
return sessionFactory.getCurrentSession();
}
public static void closeSession()
{
if (!sessionFactory.isClosed())
{
Session session = sessionFactory.getCurrentSession();
// session.flush();
session.disconnect();
session.close();
sessionFactory.close();
}
}
public static void init()
{
try
{
final ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass(DRIVER);
cpds.setJdbcUrl(JDBC_URL);
cpds.setUser(USER);
cpds.setPassword(PASSWORD);
// cpds.setMaxStatements(180);
// cpds.setMaxStatementsPerConnection(180);
sessionFactory = new Configuration().configure().buildSessionFactory();
}
catch (final PropertyVetoException e)
{
e.printStackTrace();
throw new ExceptionInInitializerError(e);
}
}
public static Object getByColumnValue(Class className, String column, String value)
{
final Session session = getSession();
session.beginTransaction();
Criteria crit = session.createCriteria(className);
crit.add(Expression.eq(column, value));
List res = crit.list();
for (Object obj : res)
return obj;
return null;
}
public static byte[] stringToBytes(String string)
{
return string.getBytes();
}
public static String bytesToString(byte[] data)
{
return new String(data);
}
public static byte[] imageToBytes(Image image)
{
try
{
BufferedImage buffImg = new BufferedImage(image.getWidth(null), image.getHeight(null),
BufferedImage.TYPE_INT_RGB);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(buffImg, "gif", bos);
return bos.toByteArray();
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
public static Image bytesToImage(byte[] data)
{
ImageIcon imageIcon = new ImageIcon(data);
return imageIcon.getImage();
}
}
package cope.pref.hibernate.util;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.beans.PropertyVetoException;
import java.io.ByteArrayOutputStream;
import java.util.List;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Expression;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public final class HibernateUtil
{
private static SessionFactory sessionFactory = null;
private static final String DRIVER = "org.postgresql.Driver";
private static final String JDBC_URL = "jdbc:postgresql://localhost:5432/preferans";
private static final String USER ...
private static final String PASSWORD ...
static
{
init();
}
public static Object load(Class cls, Long id)
{
final Session session = HibernateUtil.getSession();
session.beginTransaction();
final Object obj = session.load(cls, id);
session.getTransaction().commit();
return obj;
}
public static void delete(Object obj)
{
final Session session = getSession();
session.beginTransaction();
session.delete(obj);
session.getTransaction().commit();
}
public static void save(Object obj)
{
final Session session = getSession();
session.beginTransaction();
session.save(obj);
session.getTransaction().commit();
}
public static void saveOrUpdate(Object obj)
{
final Session session = getSession();
session.beginTransaction();
session.saveOrUpdate(obj);
session.getTransaction().commit();
}
public static void update(Object obj)
{
final Session session = getSession();
session.beginTransaction();
session.update(obj);
session.getTransaction().commit();
}
public static Criteria createCriteria(Class cls)
{
if (sessionFactory.isClosed()) init();
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
return session.createCriteria(cls);
}
public static Session getSession()
{
if (sessionFactory.isClosed()) init();
return sessionFactory.getCurrentSession();
}
public static void closeSession()
{
if (!sessionFactory.isClosed())
{
Session session = sessionFactory.getCurrentSession();
// session.flush();
session.disconnect();
session.close();
sessionFactory.close();
}
}
public static void init()
{
try
{
final ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass(DRIVER);
cpds.setJdbcUrl(JDBC_URL);
cpds.setUser(USER);
cpds.setPassword(PASSWORD);
// cpds.setMaxStatements(180);
// cpds.setMaxStatementsPerConnection(180);
sessionFactory = new Configuration().configure().buildSessionFactory();
}
catch (final PropertyVetoException e)
{
e.printStackTrace();
throw new ExceptionInInitializerError(e);
}
}
public static Object getByColumnValue(Class className, String column, String value)
{
final Session session = getSession();
session.beginTransaction();
Criteria crit = session.createCriteria(className);
crit.add(Expression.eq(column, value));
List res = crit.list();
for (Object obj : res)
return obj;
return null;
}
public static byte[] stringToBytes(String string)
{
return string.getBytes();
}
public static String bytesToString(byte[] data)
{
return new String(data);
}
public static byte[] imageToBytes(Image image)
{
try
{
BufferedImage buffImg = new BufferedImage(image.getWidth(null), image.getHeight(null),
BufferedImage.TYPE_INT_RGB);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(buffImg, "gif", bos);
return bos.toByteArray();
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
public static Image bytesToImage(byte[] data)
{
ImageIcon imageIcon = new ImageIcon(data);
return imageIcon.getImage();
}
}