summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2005-12-01 01:46:51 +0000
committerHenri Herscher <henri@oreka.org>2005-12-01 01:46:51 +0000
commit790cbf5035fa88a31f61134df055ee36e0b7788f (patch)
treeb1d298fce3bd7a3e1bc393c431890fa31281ea70
parent42cfa120cc99dc20debb290fcc82ee58eaa39322 (diff)
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
-rw-r--r--orkbasej/java/mysql.hbm.template.xml35
-rw-r--r--orkbasej/java/net/sf/oreka/HibernateManager.java27
-rw-r--r--orkbasej/java/net/sf/oreka/test/FillDatabase.java6
-rw-r--r--orktrack/src/net/sf/oreka/orktrack/OrkTrack.java3
-rw-r--r--orktrack/src/net/sf/oreka/orktrack/PortManager.java2
-rw-r--r--orktrack/src/net/sf/oreka/orktrack/ProgramManager.java2
-rw-r--r--orktrack/src/net/sf/oreka/orktrack/messages/MetadataMessage.java14
-rw-r--r--orktrack/src/net/sf/oreka/orktrack/messages/TapeMessage.java6
-rw-r--r--orktrack/src/net/sf/oreka/orktrack/messages/UserStateMessage.java3
-rw-r--r--orktrack/src/net/sf/oreka/orktrack/test/PortTest.java6
-rw-r--r--orktrack/src/net/sf/oreka/orktrack/test/ProgramTest.java6
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 @@
<property name="hibernate.dialect">org.hibernate.dialect.MySQLMyISAMDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
- <property name="hibernate.connection.password">mypassword</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.pool_size">1</property>
+ <property name="hibernate.connection.password">password</property>
+ <property name="hibernate.connection.username">root</property>
- <property name="hibernate.hbm2ddl.auto">update</property> <!-- update, create, create-drop -->
- <property name="hibernate.show_sql">true</property>
+ <!--<property name="hibernate.hbm2ddl.auto">update</property>--> <!-- update, create, create-drop -->
+ <property name="hibernate.show_sql">false</property>
- <!-- Only use one of the three following connection pools (proxools, c3p0 or dbcp): -->
-
- <property name="hibernate.proxool.pool_alias">ork-pool</property>
- <property name="hibernate.proxool.properties">proxool.properties</property>
-
- <!--<property name="c3p0.acquire_increment">1</property>-->
- <!--<property name="c3p0.idle_test_period">100</property>--> <!-- seconds -->
- <!--<property name="c3p0.max_size">100</property>-->
- <!--<property name="c3p0.max_statements">0</property>-->
- <!--<property name="c3p0.min_size">10</property>-->
- <!--<property name="c3p0.timeout">100</property>--> <!-- seconds -->
-
- <!-- dbcp does not appear to work with Hibernate 3 -->
- <!--<property name="hibernate.dbcp.ps.maxActive">100</property>-->
- <!--<property name="hibernate.dbcp.maxActive">10</property>-->
- <!--<property name="hibernate.dbcp.initialSize">2</property>-->
- <!--<property name="hibernate.dbcp.maxWait">3000</property>-->
- <!--<property name="hibernate.dbcp.validationQuery">select CURRENT_DATE</property>-->
-
- <property name="hibernate.jdbc.batch_versioned_data">true</property>
- <property name="hibernate.query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
- <property name="hibernate.cache.region_prefix">hibernate.test</property>
- <property name="hibernate.default_batch_fetch_size">8</property>
- <property name="hibernate.jdbc.use_streams_for_binary">true</property>
<property name="hibernate.max_fetch_depth">1</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
- <property name="hibernate.use_sql_comments">true</property>
- <property name="hibernate.order_updates">true</property>
</session-factory>
</hibernate-configuration>
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);