Revision: 20078
Author: emmartins
Date: Mon Sep 5 07:36:59 2011
Log: Updates JDBC example to the new JDBC RA Type
http://code.google.com/p/mobicents/source/detail?r=20078
Modified:
/trunk/servers/jain-slee/examples/jdbc-demo/pom.xml
/trunk/servers/jain-slee/examples/jdbc-demo/sbb/src/main/java/org/mobicents/slee/example/jdbc/JdbcExampleSbb.java
/trunk/servers/jain-slee/examples/jdbc-demo/sbb/src/main/resources/META-INF/sbb-jar.xml
=======================================
--- /trunk/servers/jain-slee/examples/jdbc-demo/pom.xml Thu Apr 28 02:54:47
2011
+++ /trunk/servers/jain-slee/examples/jdbc-demo/pom.xml Mon Sep 5 07:36:59
2011
@@ -7,7 +7,7 @@
<parent>
<groupId>org.mobicents</groupId>
<artifactId>mobicents-parent</artifactId>
- <version>2.19-SNAPSHOT</version>
+ <version>2.18</version>
</parent>
<artifactId>mobicents-slee-example-jdbc-demo</artifactId>
=======================================
---
/trunk/servers/jain-slee/examples/jdbc-demo/sbb/src/main/java/org/mobicents/slee/example/jdbc/JdbcExampleSbb.java
Fri Jun 17 16:43:50 2011
+++
/trunk/servers/jain-slee/examples/jdbc-demo/sbb/src/main/java/org/mobicents/slee/example/jdbc/JdbcExampleSbb.java
Mon Sep 5 07:36:59 2011
@@ -1,6 +1,8 @@
package org.mobicents.slee.example.jdbc;
+import java.sql.Connection;
import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import java.sql.Statement;
import javax.slee.ActivityContextInterface;
@@ -10,16 +12,16 @@
import javax.slee.SbbContext;
import javax.slee.facilities.Tracer;
import javax.slee.serviceactivity.ServiceStartedEvent;
+import javax.slee.transaction.SleeTransaction;
import org.mobicents.slee.SbbContextExt;
import org.mobicents.slee.resource.jdbc.JdbcActivity;
import
org.mobicents.slee.resource.jdbc.JdbcActivityContextInterfaceFactory;
import org.mobicents.slee.resource.jdbc.JdbcResourceAdaptorSbbInterface;
-import
org.mobicents.slee.resource.jdbc.event.PreparedStatementResultSetEvent;
-import
org.mobicents.slee.resource.jdbc.event.PreparedStatementUpdateCountEvent;
-import org.mobicents.slee.resource.jdbc.event.StatementResultSetEvent;
-import org.mobicents.slee.resource.jdbc.event.StatementSQLExceptionEvent;
-import org.mobicents.slee.resource.jdbc.event.StatementUpdateCountEvent;
+import
org.mobicents.slee.resource.jdbc.event.JdbcTaskExecutionExceptionEvent;
+import org.mobicents.slee.resource.jdbc.task.JdbcTaskContext;
+import org.mobicents.slee.resource.jdbc.task.simple.SimpleJdbcTask;
+import
org.mobicents.slee.resource.jdbc.task.simple.SimpleJdbcTaskResultEvent;
/**
* A SBB that examples usage of the JDBC RA.
@@ -57,104 +59,75 @@
*/
public void onServiceStartedEvent(ServiceStartedEvent event,
ActivityContextInterface aci) {
+
tracer.info("JDBC Example started.");
+
JdbcActivity jdbcActivity = jdbcRA.createActivity();
tracer.info("Created JDBC RA activity, using RA's SBB
Interface.");
+
ActivityContextInterface jdbcACI = jdbcACIF
.getActivityContextInterface(jdbcActivity);
jdbcACI.attach(contextExt.getSbbLocalObject());
tracer.info("Retrieved the ACI related to the JDBC RA activity, and
attached the sbb entity.");
- try {
- Statement statement =
jdbcRA.getConnection().createStatement();
- tracer.info("Created statement, executing query...");
- jdbcActivity.executeQuery(statement,
- "CREATE TABLE TestTable (Name
VARCHAR(30));");
- } catch (Throwable e) {
- tracer.severe("failed to create statement", e);
- }
- }
-
- /**
- * Event handler for {@link StatementResultSetEvent}.
- *
- * @param event
- * @param aci
- */
- public void onStatementResultSetEvent(StatementResultSetEvent event,
- ActivityContextInterface aci) {
- tracer.info("Received a StatementResultSetEvent, as result of executed
SQL "
- + event.getSQL());
- tracer.info("Result: " + event.getResultSet());
- try {
- PreparedStatement preparedStatement =
jdbcRA.getConnection()
- .prepareStatement("INSERT INTO TestTable
VALUES(?)");
- preparedStatement.setString(1, "Mobicents");
- tracer.info("Created prepared statement, executing...");
- ((JdbcActivity)
aci.getActivity()).executeUpdate(preparedStatement);
- } catch (Throwable e) {
- tracer.severe("failed to create statement", e);
- }
+
+ SimpleJdbcTask task = new SimpleJdbcTask() {
+ @Override
+ public Object executeSimple(JdbcTaskContext context) {
+ SleeTransaction tx = null;
+ try {
+ tx = context.getSleeTransactionManager()
+ .beginSleeTransaction();
+ Connection connection =
context.getConnection();
+ Statement statement =
connection.createStatement();
+ tracer.info("Created statement to create
table, executing query...");
+ statement
+ .execute("CREATE TABLE
TestTable (Name VARCHAR(30));");
+ PreparedStatement preparedStatement =
connection
+ .prepareStatement("INSERT
INTO TestTable VALUES(?)");
+ preparedStatement.setString(1,
"Mobicents");
+ tracer.info("Created prepared statement for data insert,
executing...");
+ preparedStatement.execute();
+ preparedStatement = connection
+ .prepareStatement("SELECT ?
From TestTable;");
+ preparedStatement.setString(1, "Name");
+ tracer.info("Created prepared statement for data query,
executing...");
+ preparedStatement.execute();
+ ResultSet resultSet =
preparedStatement.getResultSet();
+ resultSet.next();
+ tracer.info("Data query first result: "
+ +
resultSet.getString(1));
+ Statement anotherStatement =
connection.createStatement();
+ tracer.info("Created statement to drop
table, executing update...");
+ anotherStatement.executeUpdate("DROP TABLE
TestTable;");
+ tx.commit();
+ tx = null;
+ return true;
+ } catch (Exception e) {
+ tracer.severe("failed to create table",
e);
+ if (tx != null) {
+ try {
+ tx.rollback();
+ } catch (Exception f) {
+ tracer.severe("failed to
rollback tx", f);
+ }
+ }
+ return false;
+ }
+ }
+ };
+ jdbcActivity.execute(task);
}
/**
- * Event handler for {@link StatementResultSetEvent}.
+ * Event handler for {@link SimpleJdbcTaskResultEvent}.
*
* @param event
* @param aci
*/
- public void
onPreparedStatementResultSetEvent(PreparedStatementResultSetEvent event,
+ public void onSimpleJdbcTaskResultEvent(SimpleJdbcTaskResultEvent event,
ActivityContextInterface aci) {
- tracer.info("Received a PreparedStatementResultSetEvent");
- try {
- event.getResultSet().next();
- tracer.info("Result: " +
event.getResultSet().getString(1));
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- Statement anotherStatement = jdbcRA.getConnection()
- .createStatement();
- tracer.info("Created statement, executing update...");
- ((JdbcActivity)
aci.getActivity()).executeUpdate(anotherStatement,
- "DROP TABLE TestTable;");
- } catch (Throwable e) {
- tracer.severe("failed to create statement", e);
- }
- }
-
- /**
- * Event handler for {@link StatementUpdateCountEvent}.
- *
- * @param event
- * @param aci
- */
- public void onPreparedStatementUpdateCountEvent(
- PreparedStatementUpdateCountEvent event,
- ActivityContextInterface aci) {
- tracer.info("Received a PreparedStatementUpdateCountEvent.");
- tracer.info("Update Count: " + event.getUpdateCount());
- try {
- PreparedStatement preparedStatement =
jdbcRA.getConnection()
- .prepareStatement("SELECT ? From TestTable;");
- preparedStatement.setString(1, "Name");
- ((JdbcActivity)
aci.getActivity()).executeQuery(preparedStatement);
- } catch (Throwable e) {
- tracer.severe("failed to create prepared statement", e);
- }
- }
-
- /**
- * Event handler for {@link StatementUpdateCountEvent}.
- *
- * @param event
- * @param aci
- */
- public void onStatementUpdateCountEvent(StatementUpdateCountEvent event,
- ActivityContextInterface aci) {
- tracer.info("Received a StatementUpdateCountEvent, as result of executed
SQL "
- + event.getSQL());
- tracer.info("Update Count: " + event.getUpdateCount());
- tracer.info("Ending JDBC Activity...");
+ tracer.info("Received a SimpleJdbcTaskResultEvent, task = "
+ + event.getTask() + ", result object = " +
event.getResult());
((JdbcActivity) aci.getActivity()).endActivity();
}
@@ -164,11 +137,11 @@
* @param event
* @param aci
*/
- public void onStatementSQLExceptionEvent(StatementSQLExceptionEvent
event,
- ActivityContextInterface aci) {
+ public void onJdbcTaskExecutionExceptionEvent(
+ JdbcTaskExecutionExceptionEvent event,
ActivityContextInterface aci) {
tracer.info(
- "Received a StatementSQLExceptionEvent, as result of
executed SQL "
- + event.getSQL(),
event.getSQLException());
+ "Received a JdbcTaskExecutionExceptionEvent, as result of executed
task "
+ + event.getTask(),
event.getException());
tracer.info("Ending JDBC Activity...");
((JdbcActivity) aci.getActivity()).endActivity();
}
=======================================
---
/trunk/servers/jain-slee/examples/jdbc-demo/sbb/src/main/resources/META-INF/sbb-jar.xml
Fri Jun 17 16:43:50 2011
+++
/trunk/servers/jain-slee/examples/jdbc-demo/sbb/src/main/resources/META-INF/sbb-jar.xml
Mon Sep 5 07:36:59 2011
@@ -26,45 +26,18 @@
</event>
<event event-direction="Receive" initial-event="False">
- <event-name>StatementResultSetEvent</event-name>
+ <event-name>SimpleJdbcTaskResultEvent</event-name>
<event-type-ref>
-
<event-type-name>StatementResultSetEvent</event-type-name>
+
<event-type-name>SimpleJdbcTaskResultEvent</event-type-name>
<event-type-vendor>org.mobicents</event-type-vendor>
<event-type-version>1.0</event-type-version>
</event-type-ref>
</event>
-
- <event event-direction="Receive" initial-event="False">
- <event-name>PreparedStatementResultSetEvent</event-name>
- <event-type-ref>
-
<event-type-name>PreparedStatementResultSetEvent</event-type-name>
-
<event-type-vendor>org.mobicents</event-type-vendor>
- <event-type-version>1.0</event-type-version>
- </event-type-ref>
- </event>
<event event-direction="Receive" initial-event="False">
-
<event-name>PreparedStatementUpdateCountEvent</event-name>
+ <event-name>JdbcTaskExecutionExceptionEvent</event-name>
<event-type-ref>
-
<event-type-name>PreparedStatementUpdateCountEvent</event-type-name>
-
<event-type-vendor>org.mobicents</event-type-vendor>
- <event-type-version>1.0</event-type-version>
- </event-type-ref>
- </event>
-
- <event event-direction="Receive" initial-event="False">
- <event-name>StatementUpdateCountEvent</event-name>
- <event-type-ref>
-
<event-type-name>StatementUpdateCountEvent</event-type-name>
-
<event-type-vendor>org.mobicents</event-type-vendor>
- <event-type-version>1.0</event-type-version>
- </event-type-ref>
- </event>
-
- <event event-direction="Receive" initial-event="False">
- <event-name>StatementSQLExceptionEvent</event-name>
- <event-type-ref>
-
<event-type-name>StatementSQLExceptionEvent</event-type-name>
+
<event-type-name>JdbcTaskExecutionExceptionEvent</event-type-name>
<event-type-vendor>org.mobicents</event-type-vendor>
<event-type-version>1.0</event-type-version>
</event-type-ref>