Author: heiko.braun(a)jboss.com
Date: 2009-10-12 12:42:34 -0400 (Mon, 12 Oct 2009)
New Revision: 171
Modified:
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/db/DatabaseInitializer.java
Log:
Improve exception handling and run in TX when creating the BPEL schema
Modified:
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/db/DatabaseInitializer.java
===================================================================
---
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/db/DatabaseInitializer.java 2009-10-12
12:21:55 UTC (rev 170)
+++
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/db/DatabaseInitializer.java 2009-10-12
16:42:34 UTC (rev 171)
@@ -32,6 +32,8 @@
import javax.naming.InitialContext;
import javax.sql.DataSource;
+import javax.transaction.SystemException;
+import javax.transaction.UserTransaction;
import org.jboss.system.ServiceMBeanSupport;
@@ -126,32 +128,51 @@
}
public void executeSql(String resource, Connection conn)
- throws Exception
{
- URL url = Thread.currentThread().getContextClassLoader().getResource(resource);
- String sql = getStringFromStream(url.openStream());
- sql = sql.replaceAll("(?m)^--([^\n]+)?$", ""); // Remove all
commented lines
- final String[] statements ;
- if (useEOL) {
- statements = sql.split("[\n;]");
- } else {
- statements = sql.split(";");
- }
- for (String statement : statements)
- {
- if ((statement == null) || ("".equals(statement.trim()))) {
- } else {
- Statement sqlStatement = conn.createStatement();
- try
- {
- sqlStatement.executeUpdate(statement);
- }
- finally
- {
- sqlStatement.close();
- }
- }
- }
+ UserTransaction tx =null;
+ try
+ {
+ tx = (UserTransaction)new InitialContext().lookup("UserTransaction");
+ tx.begin();
+
+ URL url = Thread.currentThread().getContextClassLoader().getResource(resource);
+ String sql = getStringFromStream(url.openStream());
+ sql = sql.replaceAll("(?m)^--([^\n]+)?$", ""); // Remove all
commented lines
+ final String[] statements ;
+ if (useEOL) {
+ statements = sql.split("[\n;]");
+ } else {
+ statements = sql.split(";");
+ }
+ for (String statement : statements)
+ {
+ if ((statement == null) || ("".equals(statement.trim()))) {
+ }
+ else {
+ Statement sqlStatement = conn.createStatement();
+ try
+ {
+ sqlStatement.executeUpdate(statement);
+ }
+ finally
+ {
+ sqlStatement.close();
+ }
+ }
+ }
+
+ tx.commit();
+ }
+ catch (Throwable t)
+ {
+ if(tx!=null)
+ try {
+ tx.rollback();
+ } catch (SystemException e) {
+ //
+ }
+ throw new RuntimeException("Failed to create database", t);
+ }
}
Show replies by date