У меня есть следующий код:спящий режим мульти нити и синхронизации
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
Configuration cfg = new Configuration();
cfg=cfg.configure();
sessionFactory = cfg.buildSessionFactory();
} catch (Throwable ex) {
System.out.println("** Initial SessionFactory creation failed: " + ex.getMessage());
throw new ExceptionInInitializerError(ex);
}
}
public static final ThreadLocal hibernateSession = new ThreadLocal();
public static Session currentSession() {
Session s = (Session) hibernateSession.get();
if (s == null) {
s = sessionFactory.openSession();
//System.out.println("sessionFactory.openSession()");
hibernateSession.set(s);
}
return s;
}
public static void closeSession() {
Session s = (Session) hibernateSession.get();
if (s != null)
s.close();
hibernateSession.set(null);
}
}
Также
public class Db {
public static synchronized void Insert(Object updateBean) {
org.hibernate.Session hibernateSession = HibernateUtil.currentSession();
try {
Transaction tx = hibernateSession.beginTransaction();
hibernateSession.save(updateBean);
tx.commit();
} catch(Exception e) {
System.out.println("*hibernate insert Exception: "+e.getMessage());
}
HibernateUtil.closeSession();
}
}
спящий режим использует C3P0 пулы. Затем Db.Insert вызывается из JSP-страниц в рабочей среде с загруженным сервером.
Мой вопрос: если я удалил «синхронизированный» на Db.Insert (Object) Не могли бы вы вызвать проблемы?
Я понимаю, что это то, что я, скорее всего, уже знаю, но не хочу и не хочу проверять его и получать ошибки.
Также, если это может вызвать указанные проблемы, тогда я не уверен, насколько я понимаю смысл использования c3p0 для пула соединений ... мое понимание на данный момент вызывает HibernateUtil.currentSession(); или hibernateSession.beginTransaction(); называет доступное соединение из пула c3p0, и никогда не должно встречаться два.
Извините, что для первого бита кода, не являющегося «кодом», эта веб-форма просто не хочет работать правильно.
Спасибо за чтение
Я отформатировал код для вас - в следующий раз, пожалуйста, используйте кнопку '{}' в редакторе или просто отпустите свой код на 4 пробела :-) –
Спасибо, Питер. Я несколько раз пробовал {} несколько раз , но все еще было не очень приятно с первого бита кода. – NeedInsight