From 790cbf5035fa88a31f61134df055ee36e0b7788f Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Thu, 1 Dec 2005 01:46:51 +0000 Subject: The HibernateManager is now a regular object instead of a bunch of static methods. Each app will now be creating its own HibernateManager (and therefore separate proxool connection pool) git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@80 09dcff7a-b715-0410-9601-b79a96267cd0 --- orkbasej/java/mysql.hbm.template.xml | 35 +++------------------- orkbasej/java/net/sf/oreka/HibernateManager.java | 27 ++++++++++++++--- orkbasej/java/net/sf/oreka/test/FillDatabase.java | 6 ++-- orktrack/src/net/sf/oreka/orktrack/OrkTrack.java | 3 +- .../src/net/sf/oreka/orktrack/PortManager.java | 2 +- .../src/net/sf/oreka/orktrack/ProgramManager.java | 2 +- .../oreka/orktrack/messages/MetadataMessage.java | 14 ++++----- .../sf/oreka/orktrack/messages/TapeMessage.java | 6 ++-- .../oreka/orktrack/messages/UserStateMessage.java | 3 +- .../src/net/sf/oreka/orktrack/test/PortTest.java | 6 ++-- .../net/sf/oreka/orktrack/test/ProgramTest.java | 6 ++-- 11 files changed, 53 insertions(+), 57 deletions(-) diff --git a/orkbasej/java/mysql.hbm.template.xml b/orkbasej/java/mysql.hbm.template.xml index 99c911e..037e99f 100644 --- a/orkbasej/java/mysql.hbm.template.xml +++ b/orkbasej/java/mysql.hbm.template.xml @@ -7,40 +7,13 @@ org.hibernate.dialect.MySQLMyISAMDialect com.mysql.jdbc.Driver jdbc:mysql://localhost/test - mypassword - root - 1 + password + root - update - true + + false - - - ork-pool - proxool.properties - - - - - - - - - - - - - - - - true - true 1, false 0, yes 'Y', no 'N' - hibernate.test - 8 - true 1 org.hibernate.cache.HashtableCacheProvider - true - true diff --git a/orkbasej/java/net/sf/oreka/HibernateManager.java b/orkbasej/java/net/sf/oreka/HibernateManager.java index 6379ed4..d5d2f1b 100644 --- a/orkbasej/java/net/sf/oreka/HibernateManager.java +++ b/orkbasej/java/net/sf/oreka/HibernateManager.java @@ -17,6 +17,9 @@ package net.sf.oreka; import java.io.File; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Properties; import net.sf.oreka.persistent.Domain; import net.sf.oreka.persistent.LoginString; @@ -29,27 +32,43 @@ import net.sf.oreka.persistent.RecTape; import net.sf.oreka.persistent.Service; import net.sf.oreka.persistent.User; -import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.AnnotationConfiguration; +import org.logicalcobwebs.proxool.ProxoolFacade; public class HibernateManager { - private static SessionFactory sessionFactory = null; + private SessionFactory sessionFactory = null; static Logger logger = Logger.getLogger(HibernateManager.class); - public static void configure(String filename) throws Exception { + public void configure(String filename) throws Exception { File configFile = new File(filename); AnnotationConfiguration config = new AnnotationConfiguration(); config.configure(configFile); + Class.forName("org.logicalcobwebs.proxool.ProxoolDriver"); + Properties info = new Properties(); + info.setProperty("proxool.maximum-connection-count", "10"); + info.setProperty("proxool.house-keeping-test-sql", "select CURRENT_DATE"); + info.setProperty("user", config.getProperty("hibernate.connection.username")); + info.setProperty("password", config.getProperty("hibernate.connection.password")); + SimpleDateFormat sdf = new SimpleDateFormat("HHmmss"); + String alias = "oreka" + sdf.format(new Date()); + String driverClass = config.getProperty("hibernate.connection.driver_class"); + String driverUrl = config.getProperty("hibernate.connection.url"); + String url = "proxool." + alias + ":" + driverClass + ":" + driverUrl; + ProxoolFacade.registerConnectionPool(url, info); + + config.setProperty("hibernate.proxool.pool_alias", alias); + config.setProperty("hibernate.proxool.existing_pool", "true"); + config.addAnnotatedClass(RecProgram.class); config.addAnnotatedClass(RecSession.class); config.addAnnotatedClass(RecSegment.class); @@ -93,7 +112,7 @@ public class HibernateManager { } } - public static Session getSession() throws Exception { + public Session getSession() throws Exception { if (sessionFactory == null) { throw new OrkException("HibernateManager.getSession: application must configure hibernate before using it."); } diff --git a/orkbasej/java/net/sf/oreka/test/FillDatabase.java b/orkbasej/java/net/sf/oreka/test/FillDatabase.java index 849af3c..1bef840 100644 --- a/orkbasej/java/net/sf/oreka/test/FillDatabase.java +++ b/orkbasej/java/net/sf/oreka/test/FillDatabase.java @@ -29,11 +29,13 @@ import org.hibernate.Transaction; public class FillDatabase { + static HibernateManager hibernateManager = new HibernateManager(); + public static void main(String args[]) throws Exception { - HibernateManager.configure("c:/oreka/test/mysql.hbm.xml"); + hibernateManager.configure("c:/oreka/test/mysql.hbm.xml"); - Session hbnSession = HibernateManager.getSession(); + Session hbnSession = hibernateManager.getSession(); Transaction tx = hbnSession.beginTransaction(); Service service = new Service(); diff --git a/orktrack/src/net/sf/oreka/orktrack/OrkTrack.java b/orktrack/src/net/sf/oreka/orktrack/OrkTrack.java index 634f19b..c4aacea 100644 --- a/orktrack/src/net/sf/oreka/orktrack/OrkTrack.java +++ b/orktrack/src/net/sf/oreka/orktrack/OrkTrack.java @@ -33,6 +33,7 @@ public class OrkTrack { public static final String APP_NAME = "OrkTrack"; + public static HibernateManager hibernateManager = new HibernateManager(); private static Date lastInMemoryObjectsSync = new Date(0); public OrkTrack() { @@ -56,7 +57,7 @@ public class OrkTrack { ConfigManager.getInstance().load(configFile); try { - HibernateManager.configure(hibernateConfigFile); + hibernateManager.configure(hibernateConfigFile); } catch (Exception e) { log.error("OrkTrack.initialize: Error configuring Hibernate:" + e.getMessage()); diff --git a/orktrack/src/net/sf/oreka/orktrack/PortManager.java b/orktrack/src/net/sf/oreka/orktrack/PortManager.java index 839b9ab..bf2939f 100644 --- a/orktrack/src/net/sf/oreka/orktrack/PortManager.java +++ b/orktrack/src/net/sf/oreka/orktrack/PortManager.java @@ -120,7 +120,7 @@ public class PortManager { Session hbnSession = null; boolean success = false; try { - hbnSession = HibernateManager.getSession(); + hbnSession = OrkTrack.hibernateManager.getSession(); Transaction tx = hbnSession.beginTransaction(); Iterator portFaces = hbnSession.createQuery( diff --git a/orktrack/src/net/sf/oreka/orktrack/ProgramManager.java b/orktrack/src/net/sf/oreka/orktrack/ProgramManager.java index 033c684..c21e688 100644 --- a/orktrack/src/net/sf/oreka/orktrack/ProgramManager.java +++ b/orktrack/src/net/sf/oreka/orktrack/ProgramManager.java @@ -52,7 +52,7 @@ public class ProgramManager { boolean success = false; try { - hbnSession = HibernateManager.getSession(); + hbnSession = OrkTrack.hibernateManager.getSession(); tx = hbnSession.beginTransaction(); List progs = hbnSession.createQuery( diff --git a/orktrack/src/net/sf/oreka/orktrack/messages/MetadataMessage.java b/orktrack/src/net/sf/oreka/orktrack/messages/MetadataMessage.java index a4c279a..abf37e4 100644 --- a/orktrack/src/net/sf/oreka/orktrack/messages/MetadataMessage.java +++ b/orktrack/src/net/sf/oreka/orktrack/messages/MetadataMessage.java @@ -13,17 +13,13 @@ package net.sf.oreka.orktrack.messages; -import org.apache.log4j.Logger; -import org.hibernate.Session; -import org.hibernate.Transaction; - -import net.sf.oreka.OrkException; import net.sf.oreka.Direction; -import net.sf.oreka.HibernateManager; +import net.sf.oreka.OrkException; import net.sf.oreka.messages.AsyncMessage; import net.sf.oreka.messages.SimpleResponseMessage; import net.sf.oreka.messages.SyncMessage; import net.sf.oreka.orktrack.LogManager; +import net.sf.oreka.orktrack.OrkTrack; import net.sf.oreka.orktrack.Port; import net.sf.oreka.orktrack.PortManager; import net.sf.oreka.orktrack.ServiceManager; @@ -32,6 +28,10 @@ import net.sf.oreka.persistent.Service; import net.sf.oreka.serializers.OrkSerializer; import net.sf.oreka.serializers.SingleLineSerializer; +import org.apache.log4j.Logger; +import org.hibernate.Session; +import org.hibernate.Transaction; + public class MetadataMessage extends SyncMessage { Logger log = null; @@ -58,7 +58,7 @@ public class MetadataMessage extends SyncMessage { Session session = null; Transaction tx = null; try { - session = HibernateManager.getSession(); + session = OrkTrack.hibernateManager.getSession(); tx = session.beginTransaction(); boolean success = false; diff --git a/orktrack/src/net/sf/oreka/orktrack/messages/TapeMessage.java b/orktrack/src/net/sf/oreka/orktrack/messages/TapeMessage.java index f69454b..1f2fb9a 100644 --- a/orktrack/src/net/sf/oreka/orktrack/messages/TapeMessage.java +++ b/orktrack/src/net/sf/oreka/orktrack/messages/TapeMessage.java @@ -13,13 +13,13 @@ package net.sf.oreka.orktrack.messages; -import net.sf.oreka.OrkException; import net.sf.oreka.Direction; -import net.sf.oreka.HibernateManager; +import net.sf.oreka.OrkException; import net.sf.oreka.messages.AsyncMessage; import net.sf.oreka.messages.SimpleResponseMessage; import net.sf.oreka.messages.SyncMessage; import net.sf.oreka.orktrack.LogManager; +import net.sf.oreka.orktrack.OrkTrack; import net.sf.oreka.orktrack.Port; import net.sf.oreka.orktrack.PortManager; import net.sf.oreka.orktrack.ServiceManager; @@ -69,7 +69,7 @@ public class TapeMessage extends SyncMessage { Transaction tx = null; try { - session = HibernateManager.getSession(); + session = OrkTrack.hibernateManager.getSession(); tx = session.beginTransaction(); SingleLineSerializer ser = new SingleLineSerializer(); diff --git a/orktrack/src/net/sf/oreka/orktrack/messages/UserStateMessage.java b/orktrack/src/net/sf/oreka/orktrack/messages/UserStateMessage.java index fa8df25..e6cdf12 100644 --- a/orktrack/src/net/sf/oreka/orktrack/messages/UserStateMessage.java +++ b/orktrack/src/net/sf/oreka/orktrack/messages/UserStateMessage.java @@ -19,6 +19,7 @@ import net.sf.oreka.messages.AsyncMessage; import net.sf.oreka.messages.SimpleResponseMessage; import net.sf.oreka.messages.SyncMessage; import net.sf.oreka.orktrack.LogManager; +import net.sf.oreka.orktrack.OrkTrack; import net.sf.oreka.orktrack.Port; import net.sf.oreka.orktrack.PortManager; import net.sf.oreka.orktrack.UserManager; @@ -53,7 +54,7 @@ public class UserStateMessage extends SyncMessage { try { String comment = ""; boolean success = false; - hbnSession = HibernateManager.getSession(); + hbnSession = OrkTrack.hibernateManager.getSession(); tx = hbnSession.beginTransaction(); // find out user User user = UserManager.instance().getByLoginString(loginString, hbnSession); diff --git a/orktrack/src/net/sf/oreka/orktrack/test/PortTest.java b/orktrack/src/net/sf/oreka/orktrack/test/PortTest.java index ca08581..9c4e30c 100644 --- a/orktrack/src/net/sf/oreka/orktrack/test/PortTest.java +++ b/orktrack/src/net/sf/oreka/orktrack/test/PortTest.java @@ -44,7 +44,7 @@ public class PortTest extends TestCase { junit.textui.TestRunner.run (suite()); } protected void setUp() throws Exception { - OrkTrack.initialize("C:/oreka/log4j.properties", "C:/oreka/hsqldb.hbm.xml", "C:/oreka/orktrack.config.xml"); + OrkTrack.initialize("C:/oreka/orktrack/log4j.properties", "C:/oreka/orktrack/hsqldb.hbm.xml", "C:/oreka/orktrack/orktrack.config.xml"); } public static Test suite() { return new TestSuite(PortTest.class); @@ -188,7 +188,7 @@ public class PortTest extends TestCase { public void testTapeAndMetadataMessage() throws Exception { - Session hbnSession = HibernateManager.getSession(); + Session hbnSession = OrkTrack.hibernateManager.getSession(); Transaction tx = hbnSession.beginTransaction(); Service recService = ServiceManager.retrieveOrCreate("recservice", hbnSession); Service ctiService = ServiceManager.retrieveOrCreate("ctiservice", hbnSession); @@ -258,7 +258,7 @@ public class PortTest extends TestCase { mdStopMsg.process(); // verify database entities. - hbnSession = HibernateManager.getSession(); + hbnSession = OrkTrack.hibernateManager.getSession(); tx = hbnSession.beginTransaction(); long time = ((long)(startTimestamp+3))*1000; GregorianCalendar cal = new GregorianCalendar(); diff --git a/orktrack/src/net/sf/oreka/orktrack/test/ProgramTest.java b/orktrack/src/net/sf/oreka/orktrack/test/ProgramTest.java index 2ea1c31..26325eb 100644 --- a/orktrack/src/net/sf/oreka/orktrack/test/ProgramTest.java +++ b/orktrack/src/net/sf/oreka/orktrack/test/ProgramTest.java @@ -49,7 +49,7 @@ public class ProgramTest extends TestCase { public void test1() throws Exception { - Session hbnSession = HibernateManager.getSession(); + Session hbnSession = OrkTrack.hibernateManager.getSession(); Transaction tx = hbnSession.beginTransaction(); // create a user @@ -77,7 +77,7 @@ public class ProgramTest extends TestCase { seg.setDirection(Direction.IN); seg.setUser(user); - hbnSession = HibernateManager.getSession(); + hbnSession = OrkTrack.hibernateManager.getSession(); tx = hbnSession.beginTransaction(); if (ProgramManager.instance().filterSegmentAgainstAllPrograms(seg, hbnSession)) { hbnSession.save(seg); @@ -86,7 +86,7 @@ public class ProgramTest extends TestCase { hbnSession.close(); // verify result - hbnSession = HibernateManager.getSession(); + hbnSession = OrkTrack.hibernateManager.getSession(); tx = hbnSession.beginTransaction(); RecProgram prog = (RecProgram)hbnSession.load(RecProgram.class, prog1.getId()); assertTrue(prog.getRecordedSoFar() == 1); -- cgit v1.2.3