[ cope.rs @ 15.05.2007. 23:23 ] @
Pozdrav svima. Desila mi se GenericJDBCException greska sa PostgreSQL bazom. 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 ================================================================================================= 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(); } ================================================================================================= 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(); } } |