summaryrefslogtreecommitdiff
path: root/java/demo/Database/library/DispatchInterceptorI.java
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2008-08-22 12:07:39 -0230
committerMatthew Newhook <matthew@zeroc.com>2008-08-22 12:07:39 -0230
commitba630ccacc8ee0b1735e263569107a5f309a3a2d (patch)
treeadbf1c264aae37bef60eb42350b203391ad3e2e1 /java/demo/Database/library/DispatchInterceptorI.java
parentMoved to using a dispatch interceptor model. (diff)
downloadice-ba630ccacc8ee0b1735e263569107a5f309a3a2d.tar.bz2
ice-ba630ccacc8ee0b1735e263569107a5f309a3a2d.tar.xz
ice-ba630ccacc8ee0b1735e263569107a5f309a3a2d.zip
use a library per session.
Diffstat (limited to 'java/demo/Database/library/DispatchInterceptorI.java')
-rw-r--r--java/demo/Database/library/DispatchInterceptorI.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/java/demo/Database/library/DispatchInterceptorI.java b/java/demo/Database/library/DispatchInterceptorI.java
new file mode 100644
index 00000000000..2a8f85d72ee
--- /dev/null
+++ b/java/demo/Database/library/DispatchInterceptorI.java
@@ -0,0 +1,58 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+import Demo.*;
+
+class DispatchInterceptorI extends Ice.DispatchInterceptor
+{
+ public Ice.DispatchStatus
+ dispatch(Ice.Request request)
+ {
+ // Allocate a new SQLRequestContext associated with this
+ // request thread.
+ SQLRequestContext context = new SQLRequestContext();
+ try
+ {
+ Ice.DispatchStatus status = _servant.ice_dispatch(request, null);
+
+ // An exception causes the current transaction to rollback.
+ context.destroyFromDispatch(status == Ice.DispatchStatus.DispatchOK);
+
+ return status;
+ }
+ catch(JDBCException ex)
+ {
+ // Log the error.
+ Ice.Current c = request.getCurrent();
+ context.error("call of `" + c.operation + "' on id `" + c.id.category + "/" + c.id.name + "' failed", ex);
+
+ // A JDBCException causes the current transaction to
+ // rollback.
+ context.destroyFromDispatch(false);
+
+ // Translate the exception to UnknownException.
+ Ice.UnknownException e = new Ice.UnknownException();
+ e.initCause(ex);
+ throw e;
+ }
+ catch(RuntimeException ex)
+ {
+ // Any other exception causes the transaction to rollback.
+ context.destroyFromDispatch(false);
+ throw ex;
+ }
+ }
+
+ DispatchInterceptorI(Ice.Object servant)
+ {
+ _servant = servant;
+ }
+
+ private Ice.Object _servant;
+}