You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by va...@apache.org on 2014/07/25 12:11:18 UTC

[1/3] ODE-666 Migrated to H2 for bpel-runtime tests and bpel-test. Also cleaned up the axis2-war h2 tests.

Repository: ode
Updated Branches:
  refs/heads/master 34b4e766b -> 4900097f4


http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/dao-hibernate/src/test/java/org/apache/ode/daohib/bpel/BaseTestDAO.java
----------------------------------------------------------------------
diff --git a/dao-hibernate/src/test/java/org/apache/ode/daohib/bpel/BaseTestDAO.java b/dao-hibernate/src/test/java/org/apache/ode/daohib/bpel/BaseTestDAO.java
index a6d10c4..6fcc76c 100644
--- a/dao-hibernate/src/test/java/org/apache/ode/daohib/bpel/BaseTestDAO.java
+++ b/dao-hibernate/src/test/java/org/apache/ode/daohib/bpel/BaseTestDAO.java
@@ -21,7 +21,6 @@ package org.apache.ode.daohib.bpel;
 
 import java.util.Properties;
 
-import javax.resource.spi.ConnectionManager;
 import javax.sql.DataSource;
 import javax.transaction.TransactionManager;
 
@@ -43,7 +42,6 @@ public abstract class BaseTestDAO extends TestCase {
 
     protected BpelDAOConnection daoConn;
     protected TransactionManager txm;
-    protected ConnectionManager connectionManager;
     private DataSource ds;
     /*
      * Make this true and change the getDataSource
@@ -53,7 +51,6 @@ public abstract class BaseTestDAO extends TestCase {
 
     protected void initTM() throws Exception {
         EmbeddedGeronimoFactory factory = new EmbeddedGeronimoFactory();
-        connectionManager = new org.apache.geronimo.connector.outbound.GenericConnectionManager();
         txm = factory.getTransactionManager();
         ds = getDataSource();
         org.springframework.mock.jndi.SimpleNamingContextBuilder.emptyActivatedContextBuilder().bind("java:comp/UserTransaction", txm);

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/dao-jpa-ojpa-derby/src/main/descriptors/persistence.h2.xml
----------------------------------------------------------------------
diff --git a/dao-jpa-ojpa-derby/src/main/descriptors/persistence.h2.xml b/dao-jpa-ojpa-derby/src/main/descriptors/persistence.h2.xml
new file mode 100644
index 0000000..02cbd2d
--- /dev/null
+++ b/dao-jpa-ojpa-derby/src/main/descriptors/persistence.h2.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~    http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
+    <persistence-unit name="ode-unit-test-embedded">
+        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+        <class>org.apache.ode.dao.jpa.ActivityRecoveryDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.CorrelationSetDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.CorrelatorDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.EventDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.FaultDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.MessageDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.MessageExchangeDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.MessageRouteDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.PartnerLinkDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.ProcessDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.ProcessInstanceDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.ScopeDAOImpl</class>
+        <class>org.apache.ode.dao.jpa.XmlDataDAOImpl</class>
+
+        <class>org.apache.ode.store.jpa.ProcessConfDaoImpl</class>
+        <class>org.apache.ode.store.jpa.ProcessConfPropertyDaoImpl</class>
+        <class>org.apache.ode.store.jpa.DeploymentUnitDaoImpl</class>
+        <class>org.apache.ode.store.jpa.VersionTrackerDAOImpl</class>
+
+        <properties>
+            <!-- Properties for an embedded H2 connection -->
+            <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource"/>
+            <property name="openjpa.jdbc.DBDictionary" value="org.apache.openjpa.jdbc.sql.H2Dictionary"/>
+            <!-- To validate DBSchema and create DDL at runtime - use this property. Currently the DDL is created at build time -->
+            <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+
+            <property name="openjpa.ConnectionProperties"
+                      value="DriverClassName=org.apache.derby.jdbc.EmbeddedDriver,Url=jdbc:derby:target/database/openjpa-test-database;create=true,MaxActive=100,MaxWait=10000,TestOnBorrow=true"/>
+
+        </properties>
+    </persistence-unit>
+</persistence>
+

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/dao-jpa-ojpa-derby/src/main/scripts/simplesched-h2.sql
----------------------------------------------------------------------
diff --git a/dao-jpa-ojpa-derby/src/main/scripts/simplesched-h2.sql b/dao-jpa-ojpa-derby/src/main/scripts/simplesched-h2.sql
new file mode 100644
index 0000000..2ee1bc9
--- /dev/null
+++ b/dao-jpa-ojpa-derby/src/main/scripts/simplesched-h2.sql
@@ -0,0 +1,31 @@
+-- Apache ODE - SimpleScheduler Database Schema
+--
+-- MySQL scripts by Maciej Szefler.
+--
+--
+DROP TABLE IF EXISTS ODE_JOB;
+
+CREATE TABLE ODE_JOB (
+  jobid CHAR(64)  NOT NULL DEFAULT '',
+  ts BIGINT  NOT NULL DEFAULT 0,
+  nodeid char(64)  NULL,
+  scheduled int  NOT NULL DEFAULT 0,
+  transacted int  NOT NULL DEFAULT 0,
+
+  instanceId BIGINT,
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt blob(4096),
+
+  PRIMARY KEY(jobid)
+);
+
+create index IDX_ODE_JOB_TS on ODE_JOB(ts);
+create index IDX_ODE_JOB_NODEID on ODE_JOB(nodeid);
+

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/jbi/src/test/resources/smx-base.xml
----------------------------------------------------------------------
diff --git a/jbi/src/test/resources/smx-base.xml b/jbi/src/test/resources/smx-base.xml
index 880bc4c..d3e4d66 100644
--- a/jbi/src/test/resources/smx-base.xml
+++ b/jbi/src/test/resources/smx-base.xml
@@ -54,7 +54,7 @@
             />
 
     <bean id="odeMCF" class="org.tranql.connector.derby.EmbeddedLocalMCF">
-      <property name="databaseName" value="target/test/smx/ode/hibdb"/>
+      <property name="databaseName" value="target/test/smx/ode/derby-hibdb"/>
       <property name="createDatabase" value="false"/>
     <property name="userName" value = "sa"/>
         <property name="password" value = ""/>

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/tasks/derby.rake
----------------------------------------------------------------------
diff --git a/tasks/derby.rake b/tasks/derby.rake
index 4cb9f26..c32ab92 100644
--- a/tasks/derby.rake
+++ b/tasks/derby.rake
@@ -17,7 +17,7 @@
 
 module Derby
 
-  REQUIRES = Buildr.group("derby", "derbytools", :under=>"org.apache.derby", :version=>"10.1.2.1")
+  REQUIRES = Buildr.group("derby", "derbytools", :under=>"org.apache.derby", :version=>"10.5.3.0_1")
 
   Java.classpath << REQUIRES
 

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/tasks/h2.rake
----------------------------------------------------------------------
diff --git a/tasks/h2.rake b/tasks/h2.rake
index b791f69..892c9e5 100644
--- a/tasks/h2.rake
+++ b/tasks/h2.rake
@@ -17,7 +17,7 @@
 
 module H2
 
-  REQUIRES = "com.h2database:h2:jar:1.1.117"
+  REQUIRES = "com.h2database:h2:jar:1.3.176"
 
   #Java.classpath << REQUIRES
 
@@ -32,8 +32,8 @@ module H2
       db, prereqs = args.keys.first, args.values.first
       targetDir=File.expand_path(db)
       file(targetDir=>prereqs) do |task|
-        rm_rf dbname if File.exist?(dbname)
-        Java::Commands.java "org.h2.tools.RunScript", "-url", "jdbc:h2:file:"+Util.normalize_path("#{targetDir}/#{dbname}")+";DB_CLOSE_ON_EXIT=false;user=sa", "-showResults", "-script", prereqs, :classpath => REQUIRES
+        rm_rf task.name if File.exist?(task.name)
+        Java::Commands.java "org.h2.tools.RunScript", "-url", "jdbc:h2:file:"+Util.normalize_path("#{targetDir}/#{dbname}")+";DB_CLOSE_ON_EXIT=false", "-user", "sa", "-checkResults", "-script", prereqs, :classpath => REQUIRES
         #Buildr.filter(prereqs).into(dbname).run
         #touch task.name, :verbose=>false
       end


[3/3] git commit: ODE-742: Fixing a OS X issue with HTTP binding.

Posted by va...@apache.org.
ODE-742: Fixing a OS X issue with HTTP binding.


Project: http://git-wip-us.apache.org/repos/asf/ode/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/4900097f
Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/4900097f
Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/4900097f

Branch: refs/heads/master
Commit: 4900097f4c17b26881672e8ee6adec9aae59c605
Parents: dec47e4
Author: Tammo van Lessen <tv...@gmail.com>
Authored: Fri Jul 25 12:09:48 2014 +0200
Committer: Tammo van Lessen <tv...@gmail.com>
Committed: Fri Jul 25 12:09:48 2014 +0200

----------------------------------------------------------------------
 .../apache/ode/axis2/httpbinding/ProxyConf.java | 165 ++++++++++++++++++-
 1 file changed, 164 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ode/blob/4900097f/axis2/src/main/java/org/apache/ode/axis2/httpbinding/ProxyConf.java
----------------------------------------------------------------------
diff --git a/axis2/src/main/java/org/apache/ode/axis2/httpbinding/ProxyConf.java b/axis2/src/main/java/org/apache/ode/axis2/httpbinding/ProxyConf.java
index c0402e9..fa554d3 100644
--- a/axis2/src/main/java/org/apache/ode/axis2/httpbinding/ProxyConf.java
+++ b/axis2/src/main/java/org/apache/ode/axis2/httpbinding/ProxyConf.java
@@ -100,10 +100,173 @@ public class ProxyConf {
         if (nonProxyHosts != null) {
             String[] splitted = nonProxyHosts.split("\\|");
             for (int i = 0; i < splitted.length; i++) {
-                if (targetHost.matches(splitted[i])) return true;
+                if (match(splitted[i], targetHost, false)) return true;
             }
         }
         return false;
     }
+    
+    /**
+     * Matches a string against a pattern. The pattern contains two special
+     * characters:
+     * '*' which means zero or more characters,
+     *
+     * @param pattern the (non-null) pattern to match against
+     * @param str     the (non-null) string that must be matched against the
+     *                pattern
+     * @param isCaseSensitive
+     *
+     * @return <code>true</code> when the string matches against the pattern,
+     *         <code>false</code> otherwise.
+     */
+    protected static boolean match(String pattern, String str,
+                                   boolean isCaseSensitive) {
+
+        char[] patArr = pattern.toCharArray();
+        char[] strArr = str.toCharArray();
+        int patIdxStart = 0;
+        int patIdxEnd = patArr.length - 1;
+        int strIdxStart = 0;
+        int strIdxEnd = strArr.length - 1;
+        char ch;
+        boolean containsStar = false;
+
+        for (int i = 0; i < patArr.length; i++) {
+            if (patArr[i] == '*') {
+                containsStar = true;
+                break;
+            }
+        }
+        if (!containsStar) {
+
+            // No '*'s, so we make a shortcut
+            if (patIdxEnd != strIdxEnd) {
+                return false;        // Pattern and string do not have the same size
+            }
+            for (int i = 0; i <= patIdxEnd; i++) {
+                ch = patArr[i];
+                if (isCaseSensitive && (ch != strArr[i])) {
+                    return false;    // Character mismatch
+                }
+                if (!isCaseSensitive
+                        && (Character.toUpperCase(ch)
+                        != Character.toUpperCase(strArr[i]))) {
+                    return false;    // Character mismatch
+                }
+            }
+            return true;             // String matches against pattern
+        }
+        if (patIdxEnd == 0) {
+            return true;    // Pattern contains only '*', which matches anything
+        }
+
+        // Process characters before first star
+        while ((ch = patArr[patIdxStart]) != '*'
+                && (strIdxStart <= strIdxEnd)) {
+            if (isCaseSensitive && (ch != strArr[strIdxStart])) {
+                return false;    // Character mismatch
+            }
+            if (!isCaseSensitive
+                    && (Character.toUpperCase(ch)
+                    != Character.toUpperCase(strArr[strIdxStart]))) {
+                return false;    // Character mismatch
+            }
+            patIdxStart++;
+            strIdxStart++;
+        }
+        if (strIdxStart > strIdxEnd) {
+
+            // All characters in the string are used. Check if only '*'s are
+            // left in the pattern. If so, we succeeded. Otherwise failure.
+            for (int i = patIdxStart; i <= patIdxEnd; i++) {
+                if (patArr[i] != '*') {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        // Process characters after last star
+        while ((ch = patArr[patIdxEnd]) != '*' && (strIdxStart <= strIdxEnd)) {
+            if (isCaseSensitive && (ch != strArr[strIdxEnd])) {
+                return false;    // Character mismatch
+            }
+            if (!isCaseSensitive
+                    && (Character.toUpperCase(ch)
+                    != Character.toUpperCase(strArr[strIdxEnd]))) {
+                return false;    // Character mismatch
+            }
+            patIdxEnd--;
+            strIdxEnd--;
+        }
+        if (strIdxStart > strIdxEnd) {
+
+            // All characters in the string are used. Check if only '*'s are
+            // left in the pattern. If so, we succeeded. Otherwise failure.
+            for (int i = patIdxStart; i <= patIdxEnd; i++) {
+                if (patArr[i] != '*') {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        // process pattern between stars. padIdxStart and patIdxEnd point
+        // always to a '*'.
+        while ((patIdxStart != patIdxEnd) && (strIdxStart <= strIdxEnd)) {
+            int patIdxTmp = -1;
+
+            for (int i = patIdxStart + 1; i <= patIdxEnd; i++) {
+                if (patArr[i] == '*') {
+                    patIdxTmp = i;
+                    break;
+                }
+            }
+            if (patIdxTmp == patIdxStart + 1) {
+
+                // Two stars next to each other, skip the first one.
+                patIdxStart++;
+                continue;
+            }
+
+            // Find the pattern between padIdxStart & padIdxTmp in str between
+            // strIdxStart & strIdxEnd
+            int patLength = (patIdxTmp - patIdxStart - 1);
+            int strLength = (strIdxEnd - strIdxStart + 1);
+            int foundIdx = -1;
+
+            strLoop:
+            for (int i = 0; i <= strLength - patLength; i++) {
+                for (int j = 0; j < patLength; j++) {
+                    ch = patArr[patIdxStart + j + 1];
+                    if (isCaseSensitive
+                            && (ch != strArr[strIdxStart + i + j])) {
+                        continue strLoop;
+                    }
+                    if (!isCaseSensitive && (Character
+                            .toUpperCase(ch) != Character
+                            .toUpperCase(strArr[strIdxStart + i + j]))) {
+                        continue strLoop;
+                    }
+                }
+                foundIdx = strIdxStart + i;
+                break;
+            }
+            if (foundIdx == -1) {
+                return false;
+            }
+            patIdxStart = patIdxTmp;
+            strIdxStart = foundIdx + patLength;
+        }
+
+        // All characters in the string are used. Check if only '*'s are left
+        // in the pattern. If so, we succeeded. Otherwise failure.
+        for (int i = patIdxStart; i <= patIdxEnd; i++) {
+            if (patArr[i] != '*') {
+                return false;
+            }
+        }
+        return true;
+    }
 }
 


[2/3] git commit: ODE-666 Migrated to H2 for bpel-runtime tests and bpel-test. Also cleaned up the axis2-war h2 tests.

Posted by va...@apache.org.
ODE-666 Migrated to H2 for bpel-runtime tests and bpel-test. Also cleaned up the axis2-war h2 tests.


Project: http://git-wip-us.apache.org/repos/asf/ode/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/dec47e4b
Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/dec47e4b
Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/dec47e4b

Branch: refs/heads/master
Commit: dec47e4ba34045de1194be09aa311c10b101bbb7
Parents: 34b4e76
Author: Tammo van Lessen <tv...@gmail.com>
Authored: Fri Jul 25 12:07:08 2014 +0200
Committer: Tammo van Lessen <tv...@gmail.com>
Committed: Fri Jul 25 12:07:08 2014 +0200

----------------------------------------------------------------------
 Rakefile                                        |  48 ++++----
 .../webapp/WEB-INF/conf/ode-axis2.properties    |  16 +--
 .../org/apache/ode/axis2/Axis2TestBase.java     |   2 +-
 .../org/apache/ode/axis2/BpelActivityTest.java  |   2 +-
 .../ode/axis2/ClusteredOutgoingTrafficTest.java |   2 +-
 .../org/apache/ode/axis2/ODEConfigDirAware.java |   4 +-
 .../org/apache/ode/axis2/SelectorsTest.java     |   2 +-
 .../correlation/CorrelationJoinHibTest.java     |   2 +-
 .../correlation/CorrelationJoinLazyHibTest.java |   2 +-
 .../correlation/CorrelationJoinLazyTest.java    |   2 +-
 .../axis2/correlation/CorrelationJoinTest.java  |   2 +-
 .../correlation/CorrelationMultiHibTest.java    |   2 +-
 .../axis2/correlation/CorrelationMultiTest.java |   2 +-
 .../correlation/CorrelationUnicityTest.java     |   2 +-
 .../instancecleanup/CleanFailureHibTest.java    |   2 +-
 .../axis2/instancecleanup/CleanFailureTest.java |   2 +-
 .../instancecleanup/CleanFaultHibTest.java      |   2 +-
 .../axis2/instancecleanup/CleanFaultTest.java   |   2 +-
 .../instancecleanup/CleanSuccessHibTest.java    |   2 +-
 .../axis2/instancecleanup/CleanSuccessTest.java |   2 +-
 .../instancecleanup/ProcessCronCleanupTest.java |   2 +-
 .../instancecleanup/SystemCronCleanupTest.java  |   2 +-
 .../management/InstanceManagementTest.java      |   2 +-
 axis2-war/src/test/maven2/ode-axis2.properties  |   2 +-
 .../WEB-INF/conf.hib-derby/ode-axis2.properties |   7 +-
 .../WEB-INF/conf.hib-h2/ode-axis2.properties    |  30 +++++
 .../WEB-INF/conf.jpa-derby/ode-axis2.properties |   5 +-
 .../WEB-INF/conf.jpa-h2/ode-axis2.properties    |  21 ++++
 .../webapp/WEB-INF/conf/ode-axis2.properties    |   6 +-
 .../ode/il/config/OdeConfigProperties.java      |  27 +++++
 .../java/org/apache/ode/il/dbutil/Database.java |  10 +-
 .../il/dbutil/DatabaseConnectionManager.java    | 117 +++++++++++++++++++
 .../apache/ode/il/dbutil/DerbyEmbeddedDB.java   | 101 ++++++++++++++++
 .../org/apache/ode/il/dbutil/EmbeddedDB.java    |  44 -------
 .../org/apache/ode/il/dbutil/H2EmbeddedDB.java  |  81 +++++++++++++
 .../org/apache/ode/il/dbutil/InternalDB.java    | 115 +++---------------
 .../ode/bpel/engine/cron/CronSchedulerTest.java |  14 +--
 .../apache/ode/bpel/runtime/MockBpelServer.java |  96 +++++----------
 .../store/hib/DbConfStoreConnectionFactory.java |   2 -
 .../java/org/apache/ode/store/hib/DaoTest.java  |  36 +++---
 .../org/apache/ode/test/BPELTestAbstract.java   |  85 +++-----------
 .../apache/ode/test/ExternalVariableTest.java   |  11 +-
 .../bpel/BpelDAOConnectionFactoryImpl.java      |   2 -
 .../org/apache/ode/daohib/bpel/BaseTestDAO.java |   3 -
 .../src/main/descriptors/persistence.h2.xml     |  55 +++++++++
 .../src/main/scripts/simplesched-h2.sql         |  31 +++++
 jbi/src/test/resources/smx-base.xml             |   2 +-
 tasks/derby.rake                                |   2 +-
 tasks/h2.rake                                   |   6 +-
 49 files changed, 631 insertions(+), 388 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/Rakefile
----------------------------------------------------------------------
diff --git a/Rakefile b/Rakefile
index ebc3e20..8f55fe5 100644
--- a/Rakefile
+++ b/Rakefile
@@ -28,12 +28,14 @@ require File.join(File.dirname(__FILE__), 'dependencies.rb')
 
 Buildr.settings.build['jmock'] = "1.2.0"
 
+Buildr::Hibernate::REQUIRES[:hibernate] = HIBERNATE,
 Buildr::Hibernate::REQUIRES[:xdoclet] = Buildr.group("xdoclet", "xdoclet-xdoclet-module", "xdoclet-hibernate-module", 
  :under=>"xdoclet", :version=>"1.2.3") + ["xdoclet:xjavadoc:jar:1.1-j5"] 
 
 # XMLBeans addon must use the same version as we do.
 Buildr::XMLBeans::REQUIRES.xmlbeans.version = artifact(XMLBEANS).version
 
+Buildr::OpenJPA::REQUIRES[0] = "org.apache.openjpa:openjpa:jar:1.2.0"
 # dirty workaround for BUILDR-541/BUILDR-508
 Java.classpath << Buildr::OpenJPA::REQUIRES
 
@@ -111,7 +113,7 @@ define "ode" do
     end
     package(:war).path("WEB-INF/modules").include(artifacts(AXIS2_MODULES.mods))
     package(:war).tap do |root|
-      root.merge(artifact(AXIS2_WAR)).exclude("WEB-INF/*").exclude("META-INF/*")
+      root.merge(artifact(AXIS2_WAR)).include("WEB-INF/classes/org/*")
     end
 
     task("start"=>[package(:war), jetty.use]) do |task|
@@ -128,7 +130,7 @@ define "ode" do
     end
 
     test.using :testng, :forkmode=>'perTest', :properties=>{ "org.apache.commons.logging.LogFactory" => "org.apache.commons.logging.impl.LogFactoryImpl", "log4j.configuration"=>"test-log4j.properties", "test.ports" => ENV['TEST_PORTS'], "org.apache.ode.scheduler.deleteJobsOnStart" => "true", "org.apache.ode.autoRetireProcess"=>"true" } , :java_args=>['-Xmx2048m', '-XX:MaxPermSize=256m'] #'-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6001',
-    test.with projects("tools"), libs, AXIS2_MODULES.mods, AXIOM, JAVAX.servlet, Buildr::Jetty::REQUIRES, HIBERNATE, DOM4J, H2::REQUIRES, SPRING_TEST
+    test.with [projects("tools"), libs, AXIS2_MODULES.mods, AXIOM, JAVAX.servlet, Buildr::Jetty::REQUIRES, HIBERNATE, DOM4J, H2::REQUIRES, SPRING_TEST].uniq
     webapp_dir = "#{test.compile.target}/webapp"
     test.setup task(:prepare_webapp) do |task|
       cp_r _("src/main/webapp"), test.compile.target.to_s
@@ -198,7 +200,7 @@ define "ode" do
   define "bpel-epr" do
     compile.with projects("utils", "bpel-dao", "bpel-api"),
       AXIOM, COMMONS.lang, COMMONS.beanutils, DERBY, JAVAX.connector, JAVAX.stream, JAVAX.transaction, 
-      GERONIMO.transaction, GERONIMO.connector, TRANQL, XMLBEANS, SLF4J, LOG4J
+      GERONIMO.transaction, GERONIMO.connector, TRANQL, XMLBEANS, SLF4J, LOG4J, H2::REQUIRES
     test.with XERCES
     package :jar
   end
@@ -229,7 +231,7 @@ define "ode" do
     test.with projects("scheduler-simple", "dao-jpa", "dao-hibernate", "bpel-epr"),
         BACKPORT, COMMONS.pool, COMMONS.lang, COMMONS.io, DERBY, JAVAX.connector, JAVAX.transaction,
         GERONIMO.transaction, GERONIMO.kernel, GERONIMO.connector, TRANQL, HSQLDB, JAVAX.ejb,
-        OPENJPA, XERCES, XALAN, DOM4J, HIBERNATE, SPRING_TEST,
+        OPENJPA, XERCES, XALAN, DOM4J, HIBERNATE, SPRING_TEST, H2::REQUIRES,
         "tranql:tranql-connector-derby-common:jar:1.1"
 
     package :jar
@@ -268,7 +270,7 @@ define "ode" do
 
     test.with COMMONS.collections, COMMONS.lang, JAVAX.connector, JAVAX.transaction, DOM4J, 
       XERCES, XALAN, JAXEN, SAXON, OPENJPA, GERONIMO.transaction, SLF4J, SPRING_TEST, DERBY,
-      GERONIMO.transaction, GERONIMO.kernel, GERONIMO.connector, JAVAX.connector, JAVAX.ejb
+      GERONIMO.transaction, GERONIMO.kernel, GERONIMO.connector, JAVAX.connector, JAVAX.ejb, H2::REQUIRES
     package :jar
   end
 
@@ -283,7 +285,7 @@ define "ode" do
     test.using :properties=>{ "org.apache.ode.autoRetireProcess"=>"true" }
     test.with projects("bpel-obj", "bpel-schemas", "bpel-scripts"),
       COMMONS.collections, COMMONS.lang, DERBY, JACOB, JAVAX.connector,
-      JAVAX.stream, JAVAX.transaction, JAVAX.connector, JAXEN, HSQLDB, SAXON, XERCES, XMLBEANS, XALAN, GERONIMO.transaction, SPRING, HIBERNATE, DOM4J
+      JAVAX.stream, JAVAX.transaction, JAVAX.connector, JAXEN, HSQLDB, SAXON, XERCES, XMLBEANS, XALAN, GERONIMO.transaction, SPRING, HIBERNATE, DOM4J, H2::REQUIRES
 
     package :jar
   end
@@ -337,22 +339,22 @@ define "ode" do
       end
     end
 
-    runtime_sql = export[ properties_for[:derby], dao_hibernate, _("target/runtime.sql") ]
-    store_sql = export[ properties_for[:derby], bpel_store, _("target/store.sql") ]
     common_sql = _("src/main/sql/common.sql")
-    derby_sql = concat(_("target/derby.sql")=>[ predefined_for[:derby], common_sql, runtime_sql, store_sql ])
-    derby_db = Derby.create(_("target/derby/hibdb")=>derby_sql)
-    build derby_db
     
-    h2_sql = _("src/schema/ode-hib-h2.sql")
-    h2_db = H2.create("ode-hib-h2", _("target/h2/hibdb")=>h2_sql)
-    build h2_db
-
-    %w{ mysql firebird hsql postgres sqlserver oracle }.each do |db|
-      partial = export[ properties_for[db], dao_hibernate, _("target/partial.#{db}.sql") ]
-      build concat(_("target/#{db}.sql")=>[ common_sql, predefined_for[db], partial ])
+    %w{ derby mysql firebird hsql postgres sqlserver oracle h2}.each do |db|
+      partial_runtime = export[ properties_for[db], dao_hibernate, _("target/partial.runtime.#{db}.sql") ]
+      partial_store = export[ properties_for[db], bpel_store, _("target/partial.store.#{db}.sql") ]
+      build concat(_("target/#{db}.sql")=>[ common_sql, predefined_for[db], partial_store, partial_runtime])
     end
 
+    derby_sql = _("target/derby.sql")
+    derby_db = Derby.create(_("target/derby-hibdb")=>derby_sql)
+    build derby_db
+
+    h2_sql = _("target/h2.sql")
+    h2_db = H2.create("ode-hib-h2", _("target/h2-hibdb")=>h2_sql)
+    build h2_db
+
     NativeDB.create_dbs self, _("."), :hib
 
     package(:zip).include(derby_db, h2_db)
@@ -368,7 +370,7 @@ define "ode" do
 
   desc "ODE OpenJPA Derby Database"
   define "dao-jpa-ojpa-derby" do
-    %w{ derby mysql oracle postgres }.each do |db|
+    %w{ derby mysql oracle postgres h2 }.each do |db|
       db_xml = _("src/main/descriptors/persistence.#{db}.xml")
       scheduler_sql = _("src/main/scripts/simplesched-#{db}.sql")
       common_sql = _("src/main/scripts/common.sql")
@@ -380,7 +382,8 @@ define "ode" do
       sql = concat(_("target/#{db}.sql")=>[_("src/main/scripts/license-header.sql"), common_sql, partial_sql, scheduler_sql])
       build sql
     end
-    derby_db = Derby.create(_("target/derby/jpadb")=>_("target/derby.sql"))
+    derby_db = Derby.create(_("target/derby-jpadb")=>_("target/derby.sql"))
+    h2_db = H2.create("ode-jpa-h2", _("target/h2-jpadb")=>_("target/h2.sql"))
 
     test.with projects("bpel-api", "bpel-dao", "bpel-obj", "bpel-epr", "dao-jpa", "utils"),
       BACKPORT, COMMONS.collections, COMMONS.lang, COMMONS.logging, GERONIMO.transaction,
@@ -388,10 +391,11 @@ define "ode" do
       JAVAX.transaction, LOG4J, OPENJPA, XERCES, WSDL4J
 
     build derby_db
-
+    build h2_db
+    
     NativeDB.create_dbs self, _("."), :jpa
 
-    package(:zip).include(derby_db)
+    package(:zip).include(derby_db, h2_db)
   end
 
   desc "ODE JBI Integration Layer"

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/main/webapp/WEB-INF/conf/ode-axis2.properties
----------------------------------------------------------------------
diff --git a/axis2-war/src/main/webapp/WEB-INF/conf/ode-axis2.properties b/axis2-war/src/main/webapp/WEB-INF/conf/ode-axis2.properties
index 20bdc04..253037c 100644
--- a/axis2-war/src/main/webapp/WEB-INF/conf/ode-axis2.properties
+++ b/axis2-war/src/main/webapp/WEB-INF/conf/ode-axis2.properties
@@ -24,7 +24,7 @@
 ##   * "EMBEDDED" - ODE will create its own embbeded database (Derby)
 ##	           and connection pool (Minerva).
 ##   * "EXTERNAL" - ODE will use an app-server provided database and pool.
-##                  The "ode-jbi.db.ext.dataSource" property will need to
+##                  The "ode-axis2.db.ext.dataSource" property will need to
 ##                  be set.
 ##   * "INTERNAL" - ODE will create its own connection pool for a user-
 ##                  specified JDBC URL and driver.
@@ -43,18 +43,20 @@ ode-axis2.db.emb.type=derby
 
 ## External Database [JNDI Name]
 ## JNDI Name of the DataSource for the ODE database. This is only
-## used if the "ode-jbi.db.mode" property is set to "EXTERNAL"
+## used if the "ode-axis2.db.mode" property is set to "EXTERNAL"
 #ode-axis2.db.ext.dataSource=java:comp/env/jdbc/ode
 
 ## Embedded Database Name [String]
 ## Name of the embedded Derby database. This is only used if the
-## "ode-jbi.db.mode" property is set to "EMBEDDED".
-#ode-jbi.db.emb.name=hibdb
-#ode-jbi.db.emb.name=jpadb
+## "ode-axis2.db.mode" property is set to "EMBEDDED".
+#ode-axis2.db.emb.name=h2-hibdb
+#ode-axis2.db.emb.name=h2-jpadb
+#ode-axis2.db.emb.name=derby-hibdb
+ode-axis2.db.emb.name=derby-jpadb
 
 ## Internal Database Configuration
-#ode-jbi.db.int.jdbcurl=jdbc:mysql://localhost/ode?user=sa
-#ode-jbi.db.int.driver=com.mysql.jdbc.Driver
+#ode-axis2.db.int.jdbcurl=jdbc:mysql://localhost/ode?user=sa
+#ode-axis2.db.int.driver=com.mysql.jdbc.Driver
 #ode-axis2.db.int.password = 
 #ode-axis2.db.int.username = 
 

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/Axis2TestBase.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/Axis2TestBase.java b/axis2-war/src/test/java/org/apache/ode/axis2/Axis2TestBase.java
index 1c94b47..bac073b 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/Axis2TestBase.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/Axis2TestBase.java
@@ -184,7 +184,7 @@ public abstract class Axis2TestBase {
     @BeforeMethod
     protected void setUp() throws Exception {
 		System.out.println("##### Running "+getClass().getName());
-        log.debug("##### Running "+getClass().getName());
+        log.info("##### Running "+getClass().getName());
         /**
          * 1. If no settings are given from buildr, the test runs with the default config directory.
          * 2. If no settings are given from buildr and if the test implements ODEConfigDirAware, the test runs with

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/BpelActivityTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/BpelActivityTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/BpelActivityTest.java
index 130dce6..c7e412e 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/BpelActivityTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/BpelActivityTest.java
@@ -73,6 +73,6 @@ public class BpelActivityTest extends Axis2TestBase implements ODEConfigDirAware
     }
 
     public String getODEConfigDir() {
-        return HIB_DERBY_CONF_DIR;
+        return HIB_H2_CONF_DIR;
     }
 }

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/ClusteredOutgoingTrafficTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/ClusteredOutgoingTrafficTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/ClusteredOutgoingTrafficTest.java
index 6d0c6a4..75af7d3 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/ClusteredOutgoingTrafficTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/ClusteredOutgoingTrafficTest.java
@@ -48,6 +48,6 @@ public class ClusteredOutgoingTrafficTest extends Axis2TestBase implements ODECo
     }
 
     public String getODEConfigDir() {
-        return HIB_DERBY_CONF_DIR;
+        return HIB_H2_CONF_DIR;
     }
 }

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/ODEConfigDirAware.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/ODEConfigDirAware.java b/axis2-war/src/test/java/org/apache/ode/axis2/ODEConfigDirAware.java
index 0dfdf00..dd3bc0c 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/ODEConfigDirAware.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/ODEConfigDirAware.java
@@ -20,8 +20,8 @@
 package org.apache.ode.axis2;
 
 public interface ODEConfigDirAware {
-    final String HIB_DERBY_CONF_DIR = ODEConfigDirAware.class.getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.hib-derby";
-    final String JPA_DERBY_CONF_DIR = ODEConfigDirAware.class.getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.jpa-derby";
+    final String HIB_H2_CONF_DIR = ODEConfigDirAware.class.getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.hib-h2";
+    final String JPA_H2_CONF_DIR = ODEConfigDirAware.class.getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.jpa-h2";
 
     String getODEConfigDir();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java
index de22141..e679fb0 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java
@@ -45,6 +45,6 @@ public class SelectorsTest extends Axis2TestBase implements ODEConfigDirAware {
     }
 
     public String getODEConfigDir() {
-        return HIB_DERBY_CONF_DIR;
+        return HIB_H2_CONF_DIR;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinHibTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinHibTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinHibTest.java
index 3774810..910324a 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinHibTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinHibTest.java
@@ -22,6 +22,6 @@ package org.apache.ode.axis2.correlation;
 public class CorrelationJoinHibTest extends CorrelationJoinTest {
     @Override
     public String getODEConfigDir() {
-        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.hib-derby";
+        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.hib-h2";
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinLazyHibTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinLazyHibTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinLazyHibTest.java
index f7cedf9..20c2256 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinLazyHibTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinLazyHibTest.java
@@ -22,6 +22,6 @@ package org.apache.ode.axis2.correlation;
 public class CorrelationJoinLazyHibTest extends CorrelationJoinLazyTest {
     @Override
     public String getODEConfigDir() {
-        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.hib-derby";
+        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.hib-h2";
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinLazyTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinLazyTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinLazyTest.java
index b515b1c..32166a5 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinLazyTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinLazyTest.java
@@ -79,6 +79,6 @@ public class CorrelationJoinLazyTest extends Axis2TestBase implements ODEConfigD
     }
 
     public String getODEConfigDir() {
-        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.jpa-derby";
+        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.jpa-h2";
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinTest.java
index b135d29..d934d86 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationJoinTest.java
@@ -78,6 +78,6 @@ public class CorrelationJoinTest extends Axis2TestBase implements ODEConfigDirAw
     }
 
     public String getODEConfigDir() {
-        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.jpa-derby";
+        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.jpa-h2";
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiHibTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiHibTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiHibTest.java
index 2bab73b..3aa7808 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiHibTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiHibTest.java
@@ -22,6 +22,6 @@ package org.apache.ode.axis2.correlation;
 public class CorrelationMultiHibTest extends CorrelationMultiTest {
     @Override
     public String getODEConfigDir() {
-        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.hib-derby";
+        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.hib-h2";
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiTest.java
index 8fe9d04..15d2cb7 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiTest.java
@@ -60,6 +60,6 @@ public class CorrelationMultiTest extends Axis2TestBase implements ODEConfigDirA
     }
 
     public String getODEConfigDir() {
-        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.jpa-derby";
+        return getClass().getClassLoader().getResource("webapp").getFile() + "/WEB-INF/conf.jpa-h2";
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationUnicityTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationUnicityTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationUnicityTest.java
index 178ac87..d4a80fe 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationUnicityTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationUnicityTest.java
@@ -59,6 +59,6 @@ public class CorrelationUnicityTest extends Axis2TestBase implements ODEConfigDi
     }
 
     public String getODEConfigDir() {
-        return HIB_DERBY_CONF_DIR;
+        return HIB_H2_CONF_DIR;
     }
 }

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFailureHibTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFailureHibTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFailureHibTest.java
index 0a2c63b..153c4af 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFailureHibTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFailureHibTest.java
@@ -25,7 +25,7 @@ import org.apache.ode.bpel.dao.ProcessInstanceDAO;
 public class CleanFailureHibTest extends CleanFailureTest {
     @Override
     public String getODEConfigDir() {
-        return HIB_DERBY_CONF_DIR;
+        return HIB_H2_CONF_DIR;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFailureTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFailureTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFailureTest.java
index 2b8924e..001dc1d 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFailureTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFailureTest.java
@@ -43,7 +43,7 @@ public class CleanFailureTest extends CleanTestBase {
     }
 
     public String getODEConfigDir() {
-        return JPA_DERBY_CONF_DIR;
+        return JPA_H2_CONF_DIR;
     }
 
     protected ProcessInstanceDAO getInstance() {

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFaultHibTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFaultHibTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFaultHibTest.java
index 61d8abe..b23a20d 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFaultHibTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFaultHibTest.java
@@ -24,7 +24,7 @@ import org.apache.ode.bpel.dao.ProcessInstanceDAO;
 public class CleanFaultHibTest extends CleanFaultTest {
     @Override
     public String getODEConfigDir() {
-        return HIB_DERBY_CONF_DIR;
+        return HIB_H2_CONF_DIR;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFaultTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFaultTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFaultTest.java
index bfaac89..f1453c3 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFaultTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanFaultTest.java
@@ -92,7 +92,7 @@ public class CleanFaultTest extends CleanTestBase {
     }
 
     public String getODEConfigDir() {
-        return JPA_DERBY_CONF_DIR;
+        return JPA_H2_CONF_DIR;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanSuccessHibTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanSuccessHibTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanSuccessHibTest.java
index 84d2c06..42e061d 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanSuccessHibTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanSuccessHibTest.java
@@ -24,7 +24,7 @@ import org.apache.ode.bpel.dao.ProcessInstanceDAO;
 public class CleanSuccessHibTest extends CleanSuccessTest {
     @Override
     public String getODEConfigDir() {
-        return HIB_DERBY_CONF_DIR;
+        return HIB_H2_CONF_DIR;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanSuccessTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanSuccessTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanSuccessTest.java
index 697d41f..ef6fa64 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanSuccessTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/CleanSuccessTest.java
@@ -90,7 +90,7 @@ public class CleanSuccessTest extends CleanTestBase {
     }
 
     public String getODEConfigDir() {
-        return JPA_DERBY_CONF_DIR;
+        return JPA_H2_CONF_DIR;
     }
 
     protected ProcessInstanceDAO getInstance() {

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java
index 46890d0..e934e94 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java
@@ -46,7 +46,7 @@ public class ProcessCronCleanupTest extends CleanTestBase {
     }
 
     public String getODEConfigDir() {
-        return HIB_DERBY_CONF_DIR;
+        return HIB_H2_CONF_DIR;
     }
 
     protected ProcessInstanceDAO getInstance() {

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java
index 8b036d3..b567b9f 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java
@@ -73,7 +73,7 @@ public class SystemCronCleanupTest extends CleanTestBase {
     }
 
     public String getODEConfigDir() {
-        return HIB_DERBY_CONF_DIR;
+        return HIB_H2_CONF_DIR;
     }
 
     protected ProcessInstanceDAO getInstance() {

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/java/org/apache/ode/axis2/management/InstanceManagementTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/management/InstanceManagementTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/management/InstanceManagementTest.java
index cebed4f..a0ad6de 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/management/InstanceManagementTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/management/InstanceManagementTest.java
@@ -283,6 +283,6 @@ public class InstanceManagementTest extends Axis2TestBase implements ODEConfigDi
     }
 
     public String getODEConfigDir() {
-        return HIB_DERBY_CONF_DIR;
+        return HIB_H2_CONF_DIR;
     }
 }

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/maven2/ode-axis2.properties
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/maven2/ode-axis2.properties b/axis2-war/src/test/maven2/ode-axis2.properties
index a293a19..24ac9dc 100644
--- a/axis2-war/src/test/maven2/ode-axis2.properties
+++ b/axis2-war/src/test/maven2/ode-axis2.properties
@@ -17,7 +17,7 @@
 
 ode-axis2.dao.factory=org.apache.ode.axis2.instancecleanup.HibDaoConnectionFactoryImpl
 ode-axis2.db.mode=INTERNAL
-ode-axis2.db.int.jdbcurl=jdbc:h2:file:${basedir}/target/webapp/WEB-INF/hibdb/ode-hib-h2;DB_CLOSE_ON_EXIT=false;user=sa;TRACE_LEVEL_FILE=3
+ode-axis2.db.int.jdbcurl=jdbc:h2:file:${basedir}/target/webapp/WEB-INF/h2-hibdb/ode-hib-h2;DB_CLOSE_ON_EXIT=false;user=sa;TRACE_LEVEL_FILE=3
 ode-axis2.db.int.driver=org.h2.Driver
 ode-axis2.cluster.localRoute.targets=http://doesntexist:8080/ode/processes/
 ode-axis2.cluster.localRoute.base=http://localhost:8888/ode/processes/

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/webapp/WEB-INF/conf.hib-derby/ode-axis2.properties
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/webapp/WEB-INF/conf.hib-derby/ode-axis2.properties b/axis2-war/src/test/webapp/WEB-INF/conf.hib-derby/ode-axis2.properties
index 131993d..0badc6b 100644
--- a/axis2-war/src/test/webapp/WEB-INF/conf.hib-derby/ode-axis2.properties
+++ b/axis2-war/src/test/webapp/WEB-INF/conf.hib-derby/ode-axis2.properties
@@ -16,12 +16,11 @@
 #
 
 ode-axis2.dao.factory=org.apache.ode.axis2.instancecleanup.HibDaoConnectionFactoryImpl
-ode-axis2.db.mode=INTERNAL
-ode-axis2.db.int.jdbcurl=jdbc:h2:file:axis2-war/target/test/classes/webapp/WEB-INF/hibdb/ode-hib-h2;DB_CLOSE_ON_EXIT=false;user=sa;TRACE_LEVEL_FILE=3
-ode-axis2.db.int.driver=org.h2.Driver
+ode-axis2.db.mode=EMBEDDED
+ode-axis2.db.emb.type=DERBY
+ode-axis2.db.emb.name=derby-hibdb
 ode-axis2.cluster.localRoute.targets=http://doesntexist:8080/ode/processes/
 ode-axis2.cluster.localRoute.base=http://localhost:8888/ode/processes/
 ode-axis2.event.listeners=org.apache.ode.bpel.common.evt.DebugBpelEventListener
-#hibernate.dialect=org.hibernate.dialect.H2Dialect
 ode-axis2.acquireTransactionLocks=true
 

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/webapp/WEB-INF/conf.hib-h2/ode-axis2.properties
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/webapp/WEB-INF/conf.hib-h2/ode-axis2.properties b/axis2-war/src/test/webapp/WEB-INF/conf.hib-h2/ode-axis2.properties
new file mode 100644
index 0000000..e91a008
--- /dev/null
+++ b/axis2-war/src/test/webapp/WEB-INF/conf.hib-h2/ode-axis2.properties
@@ -0,0 +1,30 @@
+#
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You under the Apache License, Version 2.0
+#    (the "License"); you may not use this file except in compliance with
+#    the License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS,
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#    See the License for the specific language governing permissions and
+#    limitations under the License.
+#
+
+ode-axis2.dao.factory=org.apache.ode.axis2.instancecleanup.HibDaoConnectionFactoryImpl
+#ode-axis2.db.mode=INTERNAL
+#ode-axis2.db.int.jdbcurl=jdbc:h2:file:axis2-war/target/test/classes/webapp/WEB-INF/h2-hibdb/ode-hib-h2;DB_CLOSE_ON_EXIT=false;user=sa;TRACE_LEVEL_FILE=3
+#ode-axis2.db.int.driver=org.h2.Driver
+ode-axis2.db.mode=EMBEDDED
+ode-axis2.db.emb.type=H2
+ode-axis2.db.emb.name=h2-hibdb/ode-hib-h2
+
+ode-axis2.cluster.localRoute.targets=http://doesntexist:8080/ode/processes/
+ode-axis2.cluster.localRoute.base=http://localhost:8888/ode/processes/
+ode-axis2.event.listeners=org.apache.ode.bpel.common.evt.DebugBpelEventListener
+ode-axis2.acquireTransactionLocks=true
+

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/webapp/WEB-INF/conf.jpa-derby/ode-axis2.properties
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/webapp/WEB-INF/conf.jpa-derby/ode-axis2.properties b/axis2-war/src/test/webapp/WEB-INF/conf.jpa-derby/ode-axis2.properties
index f8b7e93..eea8b64 100644
--- a/axis2-war/src/test/webapp/WEB-INF/conf.jpa-derby/ode-axis2.properties
+++ b/axis2-war/src/test/webapp/WEB-INF/conf.jpa-derby/ode-axis2.properties
@@ -15,4 +15,7 @@
 #    limitations under the License.
 #
 
-ode-axis2.dao.factory=org.apache.ode.axis2.instancecleanup.JpaDaoConnectionFactoryImpl
\ No newline at end of file
+ode-axis2.dao.factory=org.apache.ode.axis2.instancecleanup.JpaDaoConnectionFactoryImpl
+ode-axis2.db.mode=EMBEDDED
+ode-axis2.db.emb.type=DERBY
+ode-axis2.db.emb.name=derby-jpadb

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/webapp/WEB-INF/conf.jpa-h2/ode-axis2.properties
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/webapp/WEB-INF/conf.jpa-h2/ode-axis2.properties b/axis2-war/src/test/webapp/WEB-INF/conf.jpa-h2/ode-axis2.properties
new file mode 100644
index 0000000..c186678
--- /dev/null
+++ b/axis2-war/src/test/webapp/WEB-INF/conf.jpa-h2/ode-axis2.properties
@@ -0,0 +1,21 @@
+#
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You under the Apache License, Version 2.0
+#    (the "License"); you may not use this file except in compliance with
+#    the License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS,
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#    See the License for the specific language governing permissions and
+#    limitations under the License.
+#
+
+ode-axis2.dao.factory=org.apache.ode.axis2.instancecleanup.JpaDaoConnectionFactoryImpl
+ode-axis2.db.mode=EMBEDDED
+ode-axis2.db.emb.type=H2
+ode-axis2.db.emb.name=h2-jpadb/ode-jpa-h2
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties b/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties
index 94dd2f1..e12b199 100644
--- a/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties
+++ b/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties
@@ -16,9 +16,9 @@
 #
 
 ode-axis2.dao.factory=org.apache.ode.axis2.instancecleanup.HibDaoConnectionFactoryImpl
-ode-axis2.db.mode=INTERNAL
-ode-axis2.db.int.jdbcurl=jdbc:h2:file:axis2-war/target/test/classes/webapp/WEB-INF/hibdb/ode-hib-h2;DB_CLOSE_ON_EXIT=false;user=sa;TRACE_LEVEL_FILE=3
-ode-axis2.db.int.driver=org.h2.Driver
+#ode-axis2.db.mode=INTERNAL
+#ode-axis2.db.int.jdbcurl=jdbc:h2:file:axis2-war/target/test/classes/webapp/WEB-INF/h2-hibdb/ode-hib-h2;DB_CLOSE_ON_EXIT=false;user=sa;TRACE_LEVEL_FILE=3
+#ode-axis2.db.int.driver=org.h2.Driver
 ode-axis2.cluster.localRoute.targets=http://doesntexist:8080/ode/processes/
 ode-axis2.cluster.localRoute.base=http://localhost:8888/ode/processes/
 ode-axis2.event.listeners=org.apache.ode.bpel.common.evt.DebugBpelEventListener

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java
----------------------------------------------------------------------
diff --git a/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java b/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java
index 5db7ceb..39ca2b0 100644
--- a/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java
+++ b/bpel-epr/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java
@@ -46,6 +46,10 @@ public class OdeConfigProperties {
 
     public static final String PROP_DB_EMBEDDED_NAME = "db.emb.name";
 
+    public static final String PROP_DB_EMBEDDED_TYPE = "db.emb.type";
+
+    public static final String PROP_DB_EMBEDDED_CREATE = "db.emb.create";
+    
     public static final String PROP_DB_INTERNAL_URL = "db.int.jdbcurl";
 
     public static final String PROP_DB_INTERNAL_DRIVER = "db.int.driver";
@@ -112,6 +116,10 @@ public class OdeConfigProperties {
     private static String __dbEmbName = "jpadb";
     private static String __daoCfClass = "org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl";
 
+    public static String DEFAULT_DB_EMB_NAME = "ode-db";
+    public static String DEFAULT_DB_EMB_TYPE = "h2";
+    public static String DEFAULT_DAOCF_CLASS = "org.apache.ode.dao.jpa.openjpa.BpelDAOConnectionFactoryImpl";
+
     static {
         String odep = System.getProperty("ode.persistence");
         if (odep != null &&
@@ -135,6 +143,17 @@ public class OdeConfigProperties {
         /** Embedded database (Ode provides default embedded database with connection pool) */
         EMBEDDED
     }
+    
+    /**
+     * Possible database implementation.
+     */
+    public enum EmbeddedDbType {
+        
+        DERBY,
+        
+        H2
+    }
+
 
     public OdeConfigProperties(File cfgFile, String prefix) {
         _cfgFile = cfgFile;
@@ -187,6 +206,14 @@ public class OdeConfigProperties {
         return getProperty(OdeConfigProperties.PROP_DB_EMBEDDED_NAME, __dbEmbName);
 
     }
+    
+    public EmbeddedDbType getDbEmbeddedType() {
+        return EmbeddedDbType.valueOf(getProperty(OdeConfigProperties.PROP_DB_EMBEDDED_TYPE, DEFAULT_DB_EMB_TYPE).trim().toUpperCase());
+    }
+
+    public boolean isDbEmbeddedCreate() {
+        return Boolean.valueOf(getProperty(OdeConfigProperties.PROP_DB_EMBEDDED_CREATE, "true"));
+    }
 
     public DatabaseMode getDbMode() {
         return DatabaseMode.valueOf(getProperty(OdeConfigProperties.PROP_DB_MODE, DatabaseMode.EMBEDDED.toString()).trim()

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Database.java
----------------------------------------------------------------------
diff --git a/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Database.java b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Database.java
index 5d895ef..9d8c04d 100644
--- a/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Database.java
+++ b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/Database.java
@@ -40,10 +40,6 @@ public abstract class Database {
 
     protected static final Messages __msgs = Messages.getMessages(Messages.class);
 
-    protected static final int CONNECTION_MAX_WAIT_MILLIS = 30000;
-
-    protected static final int CONNECTION_MAX_IDLE_MINUTES = 5;
-
     protected OdeConfigProperties _odeConfig;
 
     protected boolean _started;
@@ -59,7 +55,11 @@ public abstract class Database {
             throw new NullPointerException("Must provide a configuration.");
         
         switch (props.getDbMode()) {
-        case EMBEDDED: return new EmbeddedDB(props);
+        case EMBEDDED: 
+            switch (props.getDbEmbeddedType()) {
+                case DERBY: return new DerbyEmbeddedDB(props);
+                case H2: return new H2EmbeddedDB(props);
+            }
         case EXTERNAL: return new ExternalDB(props);
         case INTERNAL: return new InternalDB(props);
         default: throw new IllegalStateException();

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/DatabaseConnectionManager.java
----------------------------------------------------------------------
diff --git a/bpel-epr/src/main/java/org/apache/ode/il/dbutil/DatabaseConnectionManager.java b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/DatabaseConnectionManager.java
new file mode 100644
index 0000000..2ef9732
--- /dev/null
+++ b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/DatabaseConnectionManager.java
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ode.il.dbutil;
+
+
+import javax.sql.DataSource;
+import javax.transaction.TransactionManager;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.connector.outbound.GenericConnectionManager;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.LocalTransactions;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PoolingSupport;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.SinglePool;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.TransactionSupport;
+import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTracker;
+import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTrackingCoordinator;
+import org.apache.geronimo.transaction.manager.RecoverableTransactionManager;
+import org.apache.ode.il.config.OdeConfigProperties;
+import org.tranql.connector.jdbc.JDBCDriverMCF;
+
+public class DatabaseConnectionManager {
+
+    private static final long serialVersionUID = 1L;
+    private static final Log __log = LogFactory.getLog(DatabaseConnectionManager.class);
+    private static final Messages __msgs = Messages.getMessages(Messages.class);
+    private static final int CONNECTION_MAX_WAIT_MILLIS = 30000;
+    private static final int CONNECTION_MAX_IDLE_MINUTES = 5;
+    private GenericConnectionManager _connectionManager;
+    private TransactionManager _txm = null;
+    private String _url = null;
+    private OdeConfigProperties _odeConfig = null;
+    private DataSource _dataSource = null;
+
+    public DatabaseConnectionManager(TransactionManager txm, OdeConfigProperties odeConfig) {
+        _txm = txm;
+        _odeConfig = odeConfig;
+    }
+
+    public void init(String url, String driverClass, String username, String password) throws DatabaseConfigException {
+        __log.debug("Creating connection pool for " + url + " with driver " + driverClass);
+
+        if (!(_txm instanceof RecoverableTransactionManager)) {
+            throw new RuntimeException("TransactionManager is not recoverable.");
+        }
+
+        _url = url;
+        TransactionSupport transactionSupport = LocalTransactions.INSTANCE;
+        ConnectionTracker connectionTracker = new ConnectionTrackingCoordinator();
+
+        PoolingSupport poolingSupport = new SinglePool(
+                _odeConfig.getPoolMaxSize(),
+                _odeConfig.getPoolMinSize(),
+                CONNECTION_MAX_WAIT_MILLIS,
+                CONNECTION_MAX_IDLE_MINUTES,
+                true, // match one
+                false, // match all
+                false); // select one assume match
+
+        _connectionManager = new GenericConnectionManager(
+                transactionSupport,
+                poolingSupport,
+                null,
+                connectionTracker,
+                (RecoverableTransactionManager) _txm,
+                getClass().getName(),
+                getClass().getClassLoader());
+
+        JDBCDriverMCF mcf = new JDBCDriverMCF();
+        try {
+            mcf.setDriver(driverClass);
+            mcf.setConnectionURL(url);
+            if (username != null) {
+                mcf.setUserName(username);
+            }
+            if (password != null) {
+                mcf.setPassword(password);
+            }
+            _connectionManager.doStart();
+            _dataSource = (DataSource) mcf.createConnectionFactory(_connectionManager);
+        } catch (Exception ex) {
+            String errmsg = __msgs.msgOdeDbPoolStartupFailed(url);
+            __log.error(errmsg, ex);
+            throw new DatabaseConfigException(errmsg, ex);
+        }
+    }
+
+    public void shutdown() throws DatabaseConfigException {
+        try {
+            _connectionManager.doStop();
+        } catch (Exception ex) {
+            String errmsg = __msgs.msgOdeDbPoolStartupFailed(_url);
+            __log.error(errmsg, ex);
+            throw new DatabaseConfigException(errmsg, ex);
+        }
+    }
+
+    public DataSource getDataSource() {
+        return _dataSource;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/DerbyEmbeddedDB.java
----------------------------------------------------------------------
diff --git a/bpel-epr/src/main/java/org/apache/ode/il/dbutil/DerbyEmbeddedDB.java b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/DerbyEmbeddedDB.java
new file mode 100644
index 0000000..c98f93b
--- /dev/null
+++ b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/DerbyEmbeddedDB.java
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ode.il.dbutil;
+
+import java.io.File;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+import org.apache.derby.impl.io.VFMemoryStorageFactory;
+import org.apache.derby.jdbc.EmbeddedDataSource;
+import org.apache.ode.il.config.OdeConfigProperties;
+
+public class DerbyEmbeddedDB extends InternalDB {
+
+    private String _dbUrl = null;
+    private String _dbName = null;
+    
+    public DerbyEmbeddedDB(OdeConfigProperties props) {
+        super(props);
+    }
+
+    /**
+     * Initialize embedded (DERBY) database.
+     */
+    @Override
+    protected void initDataSource() throws DatabaseConfigException {
+        _dbName = _odeConfig.getDbEmbeddedName();
+        if (_workRoot == null) {
+            _dbUrl = "jdbc:derby:memory:" + _dbName + ";create=true";
+            try {
+                DriverManager.getConnection(_dbUrl).close();
+            } catch (SQLException se) {
+                __log.error(se);
+            }
+            EmbeddedDataSource dds = new EmbeddedDataSource();
+            dds.setDatabaseName("memory:" + _dbName);
+            dds.setUser("sa");
+            dds.setCreateDatabase("true");
+            _datasource = dds;
+        } else {
+            _dbUrl = "jdbc:derby:" + _workRoot + File.separator + _dbName;
+            if (_odeConfig.isDbEmbeddedCreate()) {
+                _dbUrl += ";create=true";
+            }
+            String clazz = org.apache.derby.jdbc.EmbeddedDriver.class.getName();
+            _connectionManager = new DatabaseConnectionManager(_txm, _odeConfig);
+            try {
+                _connectionManager.init(_dbUrl, clazz, "sa", null);
+            } catch (DatabaseConfigException ex) {
+                __log.error("Unable to initialize connection pool", ex);
+            }
+            _datasource = _connectionManager.getDataSource();
+            __log.debug("Using Embedded Database: " + _dbUrl);
+        }
+    }
+
+    public void shutdownDB() {
+        if (_connectionManager != null) {
+            try {
+                _connectionManager.shutdown();
+            } catch (DatabaseConfigException ex) {
+                __log.error("unable to shutdown connection pool", ex);
+            }
+        }
+        try {
+            DriverManager.getConnection(_dbUrl + ";shutdown=true").close();
+        } catch (SQLException ex) {
+            // Shutdown will always return an exeption!
+            if (ex.getErrorCode() != 45000) {
+                __log.error("Error shutting down Derby: " + ex.getErrorCode(), ex);
+            }
+        } catch (Throwable ex) {
+            __log.debug("Error shutting down Derby.", ex);
+        }
+        if (_workRoot == null) {
+            try {
+                //Don't worry about File IO, this is only virtual
+                VFMemoryStorageFactory.purgeDatabase(new File(_dbName).getCanonicalPath());
+            } catch (Exception e) {
+                __log.debug("Error shutting down Derby.", e);
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/EmbeddedDB.java
----------------------------------------------------------------------
diff --git a/bpel-epr/src/main/java/org/apache/ode/il/dbutil/EmbeddedDB.java b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/EmbeddedDB.java
deleted file mode 100644
index d2cca54..0000000
--- a/bpel-epr/src/main/java/org/apache/ode/il/dbutil/EmbeddedDB.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ode.il.dbutil;
-
-import org.apache.ode.il.config.OdeConfigProperties;
-
-public class EmbeddedDB extends InternalDB {
-
-    public EmbeddedDB(OdeConfigProperties props) {
-        super(props);
-    }
-    
-    /**
-     * Initialize embedded (DERBY) database.
-     */
-    @Override
-    protected void initDataSource() throws DatabaseConfigException {
-        String db = _odeConfig.getDbEmbeddedName();
-
-        String url = "jdbc:derby:" + _workRoot + "/" + db ;
-        __log.info("Using Embedded Derby: " + url);
-        _derbyUrl = url;
-        initInternalDb(url, org.apache.derby.jdbc.EmbeddedDriver.class.getName(),"sa",null);
-        _needDerbyShutdown = true;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/H2EmbeddedDB.java
----------------------------------------------------------------------
diff --git a/bpel-epr/src/main/java/org/apache/ode/il/dbutil/H2EmbeddedDB.java b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/H2EmbeddedDB.java
new file mode 100644
index 0000000..fea740d
--- /dev/null
+++ b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/H2EmbeddedDB.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ode.il.dbutil;
+
+import java.io.File;
+import java.sql.Connection;
+
+import org.apache.ode.il.config.OdeConfigProperties;
+import org.h2.jdbcx.JdbcDataSource;
+
+public class H2EmbeddedDB extends InternalDB {
+
+    private String _dbUrl = null;
+    private String _dbName = null;
+    
+    public H2EmbeddedDB(OdeConfigProperties props) {
+        super(props);
+    }
+
+    /**
+     * Initialize embedded (DERBY) database.
+     */
+    @Override
+    protected void initDataSource() throws DatabaseConfigException {
+        String db = _odeConfig.getDbEmbeddedName();
+        if (_workRoot == null) {
+            _dbUrl = "jdbc:h2:mem:" + db + ";DB_CLOSE_DELAY=-1";
+            JdbcDataSource hds = new JdbcDataSource();
+            hds.setURL(_dbUrl);
+            hds.setUser("sa");
+            _datasource = hds;
+        } else {
+            _dbUrl = "jdbc:h2:" + _workRoot + File.separator + db;
+            if (!_odeConfig.isDbEmbeddedCreate()) {
+                _dbUrl += ";IFEXISTS=TRUE";
+            }
+            String clazz = org.h2.Driver.class.getName();
+            _connectionManager = new DatabaseConnectionManager(_txm, _odeConfig);
+            try {
+                _connectionManager.init(_dbUrl, clazz, "sa", null);
+            } catch (DatabaseConfigException ex) {
+                __log.error("Unable to initialize connection pool", ex);
+            }
+            _datasource = _connectionManager.getDataSource();
+        }
+        __log.debug("Using Embedded Database: " + _dbUrl);
+    }
+
+    public void shutdownDB() {
+        if (_connectionManager != null) {
+            try {
+                _connectionManager.shutdown();
+            } catch (DatabaseConfigException ex) {
+                __log.error("unable to shutdown connection pool", ex);
+            }
+        }
+        try {
+            Connection conn = getDataSource().getConnection();
+            conn.createStatement().execute("SHUTDOWN");
+        } catch (Throwable ex) {
+            __log.debug("Error shutting down H2.", ex);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/InternalDB.java
----------------------------------------------------------------------
diff --git a/bpel-epr/src/main/java/org/apache/ode/il/dbutil/InternalDB.java b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/InternalDB.java
index e21c17f..465d13b 100644
--- a/bpel-epr/src/main/java/org/apache/ode/il/dbutil/InternalDB.java
+++ b/bpel-epr/src/main/java/org/apache/ode/il/dbutil/InternalDB.java
@@ -19,31 +19,13 @@
 
 package org.apache.ode.il.dbutil;
 
-import java.sql.SQLException;
-import java.util.Properties;
-
-import javax.sql.DataSource;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.derby.jdbc.EmbeddedDriver;
-import org.apache.geronimo.connector.outbound.GenericConnectionManager;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.LocalTransactions;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PoolingSupport;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.SinglePool;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.TransactionSupport;
-import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTracker;
-import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTrackingCoordinator;
-import org.apache.geronimo.transaction.manager.RecoverableTransactionManager;
 import org.apache.ode.il.config.OdeConfigProperties;
-import org.tranql.connector.jdbc.JDBCDriverMCF;
 
 public class InternalDB extends Database {
+    protected static final int CONNECTION_MAX_WAIT_MILLIS = 30000;
+    protected static final int CONNECTION_MAX_IDLE_MINUTES = 5;
 
-    protected GenericConnectionManager _connectionManager;
-
-    protected boolean _needDerbyShutdown;
-
-    protected String _derbyUrl;
+    protected DatabaseConnectionManager _connectionManager;
     
     public InternalDB(OdeConfigProperties props) {
         super(props);
@@ -54,7 +36,6 @@ public class InternalDB extends Database {
         if (_started)
             return;
 
-        _needDerbyShutdown = false;
         _datasource = null;
         _connectionManager = null;
 
@@ -67,36 +48,25 @@ public class InternalDB extends Database {
         if (!_started)
             return;
 
-        if (_connectionManager != null)
+        if (_connectionManager != null) {
             try {
                 __log.debug("Stopping connection manager");
-                _connectionManager.doStop();
+                _connectionManager.shutdown();
             } catch (Throwable t) {
                 __log.warn("Exception while stopping connection manager: " + t.getMessage());
             } finally {
                 _connectionManager = null;
             }
-
-        if (_needDerbyShutdown) {
-            __log.debug("shutting down derby.");
-            EmbeddedDriver driver = new EmbeddedDriver();
-            try {
-                driver.connect(_derbyUrl + ";shutdown=true", new Properties());
-            } catch (SQLException ex) {
-                // Shutdown will always return an exeption!
-                if (ex.getErrorCode() != 45000)
-                    __log.error("Error shutting down Derby: " + ex.getErrorCode(), ex);
-
-            } catch (Throwable ex) {
-                __log.debug("Error shutting down Derby.", ex);
-            }
         }
-
-        _needDerbyShutdown = false;
+        
+        shutdownDB();
+    
         _datasource = null;
         _started = false;
     }
     
+    protected void shutdownDB() {}
+    
     protected void initDataSource() throws DatabaseConfigException {
         __log.info(__msgs.msgOdeUsingInternalDb(_odeConfig.getDbIntenralJdbcUrl(), _odeConfig.getDbInternalJdbcDriverClass()));
         initInternalDb(_odeConfig.getDbIntenralJdbcUrl(), _odeConfig.getDbInternalJdbcDriverClass(),
@@ -104,65 +74,8 @@ public class InternalDB extends Database {
     }
 
     protected void initInternalDb(String url, String driverClass, String username,String password) throws DatabaseConfigException {
-
-        __log.debug("Creating connection pool for " + url + " with driver " + driverClass);
-        if (!(_txm instanceof RecoverableTransactionManager)) {
-            throw new RuntimeException("TransactionManager is not recoverable.");
-        }
-
-        TransactionSupport transactionSupport = LocalTransactions.INSTANCE;
-        ConnectionTracker connectionTracker = new ConnectionTrackingCoordinator();
-
-        PoolingSupport poolingSupport = new SinglePool(
-                _odeConfig.getPoolMaxSize(),
-                _odeConfig.getPoolMinSize(),
-                CONNECTION_MAX_WAIT_MILLIS,
-                CONNECTION_MAX_IDLE_MINUTES,
-                true, // match one
-                false, // match all
-                false); // select one assume match
-
-        _connectionManager = new GenericConnectionManager(
-                    transactionSupport,
-                    poolingSupport,
-                    null,
-                    connectionTracker,
-                    (RecoverableTransactionManager) _txm,
-                    getClass().getName(),
-                    getClass().getClassLoader());
-
-
-        try {
-            javax.resource.spi.ManagedConnectionFactory mcf = null;
-            String mcfClass = _odeConfig.getDbInternalMCFClass();
-            if (mcfClass != null) {
-                Properties dbInternalMCFProps = _odeConfig.getDbInternalMCFProperties();
-                if (__log.isDebugEnabled()) {
-                    __log.debug("Using internal DB MCF " + mcfClass + " " + dbInternalMCFProps);
-                }
-                mcf = (javax.resource.spi.ManagedConnectionFactory) Class.forName(mcfClass).newInstance();
-                BeanUtils.copyProperties(mcf, dbInternalMCFProps);
-            } else {
-                if (__log.isDebugEnabled()) {
-                    __log.debug("Using internal DB JDBCDriverMCF");
-                }
-                JDBCDriverMCF mcf2 = new JDBCDriverMCF();
-                mcf = mcf2;
-                mcf2.setDriver(driverClass);
-                mcf2.setConnectionURL(url);
-                if (username != null) {
-                    mcf2.setUserName(username);
-                }
-                if (password != null) {
-                    mcf2.setPassword(password);
-                }
-            }
-            _connectionManager.doStart();
-            _datasource = (DataSource) mcf.createConnectionFactory(_connectionManager);
-        } catch (Exception ex) {
-            String errmsg = __msgs.msgOdeDbPoolStartupFailed(url);
-            __log.error(errmsg, ex);
-            throw new DatabaseConfigException(errmsg, ex);
-        }
-    }
+        _connectionManager = new DatabaseConnectionManager(_txm,_odeConfig);
+        _connectionManager.init(url, driverClass, username, password);
+        _datasource = _connectionManager.getDataSource();
+     }
 }

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
----------------------------------------------------------------------
diff --git a/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java b/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
index df9d8ad..a8e9876 100644
--- a/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
+++ b/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
@@ -48,13 +48,13 @@ public class CronSchedulerTest extends MockObjectTestCase {
     private CronScheduler cronScheduler;
     private ExecutorService execService;
 
-    static {
-        BasicConfigurator.configure();
-        LogManager.getRootLogger().setLevel(Level.DEBUG);
-        LogManager.getLogger(RuntimeDataCleanupRunnable.class).setLevel(Level.DEBUG);
-        LogManager.getLogger(BpelDAOConnectionImpl.class).setLevel(Level.DEBUG);
-        LogManager.getLogger("org.apache.ode").setLevel(Level.DEBUG);
-    }
+//    static {
+//        BasicConfigurator.configure();
+//        LogManager.getRootLogger().setLevel(Level.DEBUG);
+//        LogManager.getLogger(RuntimeDataCleanupRunnable.class).setLevel(Level.DEBUG);
+//        LogManager.getLogger(BpelDAOConnectionImpl.class).setLevel(Level.DEBUG);
+//        LogManager.getLogger("org.apache.ode").setLevel(Level.DEBUG);
+//    }
 
     protected void setUp() throws Exception {
         contexts = new Contexts();

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
----------------------------------------------------------------------
diff --git a/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java b/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
index d37907e..edc1fd7 100644
--- a/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
+++ b/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
@@ -18,17 +18,24 @@
  */
 package org.apache.ode.bpel.runtime;
 
-import org.apache.derby.jdbc.EmbeddedXADataSource;
-import org.apache.geronimo.connector.outbound.GenericConnectionManager;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.LocalTransactions;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PoolingSupport;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.SinglePool;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.TransactionSupport;
-import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTracker;
-import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTrackingCoordinator;
-import org.apache.geronimo.transaction.manager.RecoverableTransactionManager;
+import java.io.File;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+import javax.sql.DataSource;
+import javax.transaction.TransactionManager;
+import javax.wsdl.PortType;
+import javax.xml.namespace.QName;
+
 import org.apache.ode.bpel.dao.BpelDAOConnectionFactory;
-import org.apache.ode.bpel.dao.BpelDAOConnectionFactoryJDBC;
 import org.apache.ode.bpel.engine.BpelServerImpl;
 import org.apache.ode.bpel.iapi.BindingContext;
 import org.apache.ode.bpel.iapi.ContextException;
@@ -41,9 +48,7 @@ import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
 import org.apache.ode.bpel.iapi.PartnerRoleChannel;
 import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
 import org.apache.ode.bpel.iapi.Scheduler;
-import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
 import org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl;
-import org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl;
 import org.apache.ode.il.EmbeddedGeronimoFactory;
 import org.apache.ode.il.MockScheduler;
 import org.apache.ode.il.config.OdeConfigProperties;
@@ -51,28 +56,9 @@ import org.apache.ode.il.dbutil.Database;
 import org.apache.ode.store.ProcessStoreImpl;
 import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.utils.GUID;
-import org.hsqldb.jdbc.jdbcDataSource;
-import org.tranql.connector.derby.EmbeddedLocalMCF;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import javax.resource.spi.ConnectionManager;
-import javax.sql.DataSource;
-import javax.transaction.TransactionManager;
-import javax.wsdl.PortType;
-import javax.xml.namespace.QName;
-import java.io.File;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Collections;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
 
 class MockBpelServer {
 
@@ -173,6 +159,7 @@ class MockBpelServer {
         _server.stop();
         _scheduler.stop();
         _scheduler.shutdown();
+        _database.shutdown();
     }
 
     protected TransactionManager createTransactionManager() throws Exception {
@@ -183,45 +170,14 @@ class MockBpelServer {
     }
 
     protected DataSource createDataSource() throws Exception {
-        TransactionSupport transactionSupport = LocalTransactions.INSTANCE;
-        ConnectionTracker connectionTracker = new ConnectionTrackingCoordinator();
-
-        PoolingSupport poolingSupport = new SinglePool(
-                10,
-                0,
-                1000,
-                1,
-                true,
-                false,
-                false);
-
-        ConnectionManager connectionManager = new GenericConnectionManager(
-                    transactionSupport,
-                    poolingSupport,
-                    null,
-                    connectionTracker,
-                    (RecoverableTransactionManager) _txManager,
-                    getClass().getName(),
-                    getClass().getClassLoader());
-
-
-            EmbeddedLocalMCF mcf = new org.tranql.connector.derby.EmbeddedLocalMCF();
-            mcf.setCreateDatabase(true);
-            mcf.setDatabaseName("target/testdb");
-            mcf.setUserName("sa");
-            mcf.setPassword("");
-            _dataSource = (DataSource) mcf.createConnectionFactory(connectionManager);
-            return _dataSource;
-
-
-//        d = org.tranql.connector.jdbc.JDBCDriverMCF();
-//        EmbeddedXADataSource ds = new EmbeddedXADataSource();
-//        ds.setCreateDatabase("create");
-//        ds.setDatabaseName("target/testdb");
-//        ds.setUser("sa");
-//        ds.setPassword("");
-//        _dataSource = ds;
-//        return _dataSource;
+        Properties props = new Properties();
+        props.setProperty(OdeConfigProperties.PROP_DAOCF, System.getProperty(OdeConfigProperties.PROP_DAOCF, OdeConfigProperties.DEFAULT_DAOCF_CLASS));
+        OdeConfigProperties odeProps = new OdeConfigProperties(props,"");
+        _database = Database.create(odeProps);
+        _database.setTransactionManager(_txManager);
+        _database.start();
+        _dataSource = _database.getDataSource();
+        return _dataSource;
     }
 
     protected Scheduler createScheduler() throws Exception {

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java
----------------------------------------------------------------------
diff --git a/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java b/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java
index edf39d1..db4e9d0 100644
--- a/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java
+++ b/bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java
@@ -51,8 +51,6 @@ public class DbConfStoreConnectionFactory implements ConfStoreConnectionFactory
 
     private static final Messages __msgs = MessageBundle.getMessages(Messages.class);
 
-    private static final String DEFAULT_HIBERNATE_DIALECT = "org.hibernate.dialect.DerbyDialect";
-
     private static final String _guid = new GUID().toString();
 
     private static final Map<String, DataSource> _dataSources = new ConcurrentHashMap<String, DataSource>();

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
----------------------------------------------------------------------
diff --git a/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java b/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
index 9b1c8fa..f289e5e 100644
--- a/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
+++ b/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
@@ -18,46 +18,46 @@
  */
 package org.apache.ode.store.hib;
 
+import java.util.Properties;
+
+import javax.sql.DataSource;
+import javax.transaction.TransactionManager;
+import javax.xml.namespace.QName;
+
 import junit.framework.TestCase;
 
-import org.apache.derby.jdbc.EmbeddedXADataSource;
 import org.apache.ode.bpel.dao.BpelDAOConnection;
 import org.apache.ode.il.EmbeddedGeronimoFactory;
 import org.apache.ode.il.config.OdeConfigProperties;
+import org.apache.ode.il.dbutil.Database;
+import org.apache.ode.il.dbutil.DatabaseConfigException;
 import org.apache.ode.store.ConfStoreConnection;
 import org.apache.ode.store.ConfStoreConnectionFactory;
 import org.apache.ode.store.DeploymentUnitDAO;
 import org.apache.ode.store.ProcessConfDAO;
-import org.hsqldb.jdbc.jdbcDataSource;
-import java.util.Properties;
-
-import javax.resource.spi.ConnectionManager;
-import javax.sql.DataSource;
-import javax.transaction.TransactionManager;
-import javax.xml.namespace.QName;
 
 public class DaoTest extends TestCase {
     protected BpelDAOConnection daoConn;
     protected TransactionManager txm;
-    protected ConnectionManager connectionManager;
     private DataSource ds;
+    private Database db;
     ConfStoreConnectionFactory cf;
 
-    protected DataSource getDataSource() {
+    protected DataSource getDataSource() throws DatabaseConfigException {
         if (ds == null) {
-            EmbeddedXADataSource ds = new EmbeddedXADataSource();
-            ds.setCreateDatabase("create");
-            ds.setDatabaseName("target/testdb");
-            ds.setUser("sa");
-            ds.setPassword("");
-            this.ds = ds;
+            Properties props = new Properties();
+            props.setProperty(OdeConfigProperties.PROP_DAOCF, System.getProperty(OdeConfigProperties.PROP_DAOCF, OdeConfigProperties.DEFAULT_DAOCF_CLASS));
+            OdeConfigProperties odeProps = new OdeConfigProperties(props,"");
+            db = Database.create(odeProps);
+            db.setTransactionManager(txm);
+            db.start();
+            this.ds = db.getDataSource();
         }
         return ds;
     }
 
     public void setUp() throws Exception {
         EmbeddedGeronimoFactory factory = new EmbeddedGeronimoFactory();
-        connectionManager = new org.apache.geronimo.connector.outbound.GenericConnectionManager();
         txm = factory.getTransactionManager();
         ds = getDataSource();
         org.springframework.mock.jndi.SimpleNamingContextBuilder.emptyActivatedContextBuilder().bind("java:comp/UserTransaction", txm);
@@ -67,7 +67,7 @@ public class DaoTest extends TestCase {
     }
 
     public void tearDown() throws Exception {
-//        hsqlds.getConnection().createStatement().execute("SHUTDOWN");
+        db.shutdown();
     }
 
     public void testEmpty() {

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java
----------------------------------------------------------------------
diff --git a/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java b/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java
index 5d51a4c..d24b59b 100644
--- a/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java
+++ b/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java
@@ -30,55 +30,46 @@ import java.util.List;
 import java.util.Properties;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.geronimo.connector.outbound.GenericConnectionManager;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.LocalTransactions;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PoolingSupport;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.SinglePool;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.TransactionSupport;
-import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTracker;
-import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTrackingCoordinator;
-import org.apache.geronimo.transaction.manager.RecoverableTransactionManager;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.resource.spi.ConnectionManager;
 import javax.sql.DataSource;
 import javax.transaction.TransactionManager;
 import javax.xml.namespace.QName;
 
-import org.apache.derby.jdbc.EmbeddedXADataSource;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.evt.DebugBpelEventListener;
 import org.apache.ode.bpel.dao.BpelDAOConnectionFactory;
 import org.apache.ode.bpel.engine.BpelServerImpl;
 import org.apache.ode.bpel.iapi.Message;
 import org.apache.ode.bpel.iapi.MessageExchange;
+import org.apache.ode.bpel.iapi.MessageExchange.Status;
 import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
+import org.apache.ode.bpel.iapi.MyRoleMessageExchange.CorrelationStatus;
 import org.apache.ode.bpel.iapi.ProcessStore;
 import org.apache.ode.bpel.iapi.ProcessStoreEvent;
 import org.apache.ode.bpel.iapi.ProcessStoreListener;
-import org.apache.ode.bpel.iapi.MessageExchange.Status;
-import org.apache.ode.bpel.iapi.MyRoleMessageExchange.CorrelationStatus;
 import org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl;
 import org.apache.ode.il.EmbeddedGeronimoFactory;
 import org.apache.ode.il.config.OdeConfigProperties;
+import org.apache.ode.il.dbutil.Database;
+import org.apache.ode.scheduler.simple.JdbcDelegate;
+import org.apache.ode.scheduler.simple.SimpleScheduler;
 import org.apache.ode.store.ProcessConfImpl;
 import org.apache.ode.store.ProcessStoreImpl;
 import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.utils.GUID;
-import org.apache.ode.scheduler.simple.SimpleScheduler;
-import org.apache.ode.scheduler.simple.JdbcDelegate;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.w3c.dom.Element;
-import java.util.concurrent.*;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 public abstract class BPELTestAbstract {
     private static final Log log = LogFactory.getLog(BPELTestAbstract.class);
@@ -90,6 +81,7 @@ public abstract class BPELTestAbstract {
 
     public static TransactionManager _txManager = null;
     public static DataSource _dataSource = null;
+    protected Database _database;
     
     protected ProcessStore store;
 
@@ -119,7 +111,6 @@ public abstract class BPELTestAbstract {
 
     @Before
     public void setUp() throws Exception {
-        EmbeddedGeronimoFactory factory = new EmbeddedGeronimoFactory();
         if (_txManager == null) {
             _txManager = createTransactionManager();
             org.springframework.mock.jndi.SimpleNamingContextBuilder.emptyActivatedContextBuilder().bind("java:comp/UserTransaction", _txManager);
@@ -136,12 +127,7 @@ public abstract class BPELTestAbstract {
                 _txManager.commit();
             }
         }
-//        try {
-//            _dataSource.getConnection();
-//        } catch (Exception e) {
-//            
-//        }
-//        createDataSource(false);
+
         _failures = new CopyOnWriteArrayList<Failure>();
         _server = new BpelServerImpl();
         Properties props = getConfigProperties();
@@ -202,8 +188,6 @@ public abstract class BPELTestAbstract {
         _deployed = null;
         _deployments = null;
         _invocations = null;
-        
-
     }
 
     protected TransactionManager createTransactionManager() throws Exception {
@@ -214,45 +198,14 @@ public abstract class BPELTestAbstract {
     }
 
     protected DataSource createDataSource(boolean shutdown) throws Exception {
-        TransactionSupport transactionSupport = LocalTransactions.INSTANCE;
-        ConnectionTracker connectionTracker = new ConnectionTrackingCoordinator();
-
-        PoolingSupport poolingSupport = new SinglePool(
-                10,
-                0,
-                1000,
-                1,
-                true,
-                false,
-                false);
-
-        ConnectionManager connectionManager = new GenericConnectionManager(
-                    transactionSupport,
-                    poolingSupport,
-                    null,
-                    connectionTracker,
-                    (RecoverableTransactionManager) _txManager,
-                    getClass().getName(),
-                    getClass().getClassLoader());
-
-            org.tranql.connector.derby.EmbeddedLocalMCF mcf = new org.tranql.connector.derby.EmbeddedLocalMCF();
-            mcf.setCreateDatabase(true);
-            mcf.setDatabaseName("target/testdb");
-            mcf.setUserName("sa");
-            mcf.setPassword("");
-            if (shutdown) {
-                mcf.setShutdownDatabase("shutdown");
-            }
-            return (DataSource) mcf.createConnectionFactory(connectionManager);
-
-//        d = org.tranql.connector.jdbc.JDBCDriverMCF();
-//        EmbeddedXADataSource ds = new EmbeddedXADataSource();
-//        ds.setCreateDatabase("create");
-//        ds.setDatabaseName("target/testdb");
-//        ds.setUser("sa");
-//        ds.setPassword("");
-//        _dataSource = ds;
-//        return _dataSource;
+        Properties props = new Properties();
+        props.setProperty(OdeConfigProperties.PROP_DAOCF, System.getProperty(OdeConfigProperties.PROP_DAOCF, OdeConfigProperties.DEFAULT_DAOCF_CLASS));
+        OdeConfigProperties odeProps = new OdeConfigProperties(props,"");
+        _database = Database.create(odeProps);
+        _database.setTransactionManager(_txManager);
+        _database.start();
+        _dataSource = _database.getDataSource();
+        return _dataSource;
     }
 
     protected void negative(String deployDir) throws Throwable {

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/bpel-test/src/test/java/org/apache/ode/test/ExternalVariableTest.java
----------------------------------------------------------------------
diff --git a/bpel-test/src/test/java/org/apache/ode/test/ExternalVariableTest.java b/bpel-test/src/test/java/org/apache/ode/test/ExternalVariableTest.java
index 3bbc6e2..0d49e3d 100644
--- a/bpel-test/src/test/java/org/apache/ode/test/ExternalVariableTest.java
+++ b/bpel-test/src/test/java/org/apache/ode/test/ExternalVariableTest.java
@@ -26,8 +26,8 @@ import java.sql.Statement;
 import javax.sql.DataSource;
 import javax.xml.namespace.QName;
 
-import org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource;
 import org.apache.ode.bpel.extvar.jdbc.JdbcExternalVariableModule;
+import org.h2.jdbcx.JdbcDataSource;
 import org.junit.Test;
 
 /**
@@ -41,11 +41,12 @@ public class ExternalVariableTest extends BPELTestAbstract {
 
     public void setUp() throws Exception {
         super.setUp();
+        
+        JdbcDataSource hds = new JdbcDataSource();
+        hds.setURL("jdbc:h2:mem:odeextvar;DB_CLOSE_DELAY=-1");
+        hds.setUser("sa");
 
-        EmbeddedConnectionPoolDataSource ds = new EmbeddedConnectionPoolDataSource();
-        ds.setCreateDatabase("create");
-        ds.setDatabaseName("target/ExternalVariableTest");
-        _ds = ds;
+        _ds = hds;
 
         _jdbcext = new JdbcExternalVariableModule();
         _jdbcext.registerDataSource("testds", _ds);

http://git-wip-us.apache.org/repos/asf/ode/blob/dec47e4b/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionFactoryImpl.java
----------------------------------------------------------------------
diff --git a/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionFactoryImpl.java b/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionFactoryImpl.java
index 9d7d309..2b24c4f 100644
--- a/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionFactoryImpl.java
+++ b/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionFactoryImpl.java
@@ -123,8 +123,6 @@ public class BpelDAOConnectionFactoryImpl implements BpelDAOConnectionFactoryJDB
         return new SessionManager(properties, ds, tm);
     }
 
-    private static final String DEFAULT_HIBERNATE_DIALECT = "org.hibernate.dialect.DerbyDialect";
-
     public void shutdown() {
     	_sessionManager.shutdown();
     }