Project

General

Profile

Sample-jta-plain » History » Version 12

Henning Blohm, 22.09.2012 14:51

1 3 Henning Blohm
h1. Using Z2 with a Transaction Manager
2 1 Henning Blohm
3 2 Henning Blohm
This sample demonstrates how to use Z2 with the Atomikos transaction manager. There is another sample that shows how to use Z2 with a Spring configured transaction manager. See [[sample-jta-spring]]. In contrast to that, this sample is less sophisticated but probably better suited to understand the underlying mechanics.
4 1 Henning Blohm
5
The Wiki page [[How_to_TransactionManager]] explains the general principles behind transaction handling in Z2.
6
7 11 Henning Blohm
This sample is stored in "z2-samples.jta-plain":http://redmine.z2-environment.net/projects/z2-samples/repository/z2-samples-jta-plain. It implements exactly the same scenario as [[Sample-hibernate-basic]] with the exception of not using the built-in JTA implementation.
8 2 Henning Blohm
9 12 Henning Blohm
h2. Prerequisites
10 2 Henning Blohm
11 12 Henning Blohm
You need to run Java DB as network server on localhost. This is explained next.
12 2 Henning Blohm
13 12 Henning Blohm
The application will create a database "z2-samples"
14
15
{{include(How to run Java db)}}
16 2 Henning Blohm
17
h2. Running the sample
18
19
This sample is run as explained in [[How to run a sample]]. The 5 minutes version:
20
21
<pre><code class="ruby">
22
mkdir install
23
cd install 
24
git clone -b master http://git.z2-environment.net/z2-base.core
25
git clone -b master http://git.z2-environment.net/z2-samples.jta-plain
26
27
# on Linux / Mac OS:
28
cd z2-base.core/run/bin
29
./gui.sh
30
31
# on Windows:
32
cd z2-base.core\run\bin
33
gui.bat
34 1 Henning Blohm
</code></pre>
35 3 Henning Blohm
36
h2. Verifying
37
38
When everything is up, go to http://localhost:8080/tx.plain. You see something like this: 
39
40
!plain_thingies.png!
41
42 5 Henning Blohm
And indeed, the implemented function is rather obvious: Manage a table of strings - called Thingies in the sample.
43 3 Henning Blohm
44
h2. Now to the point...
45 4 Henning Blohm
46 1 Henning Blohm
The idea behind this sample is to provide a template for transaction manager integration. Note that before you integrate with a complete transaction management system, you should be sure that you need it. Distributed transactions come at a price in terms of complexity and overhead of local transaction logs. If you do not have multiple data sources, or if those have no strong inherent consistency requirement you may well be better off without a full-blown, XA capable transaction manager. Please also see [[How to transaction management]].
47 5 Henning Blohm
48 6 Henning Blohm
h2. Detailed explanation
49 5 Henning Blohm
50
The sample has four modules:
51
52 7 Henning Blohm
* *com.atomikos*: This module holds the "Atomikos Transaction Essentials":http://www.atomikos.com/Main/TransactionsEssentials libraries - the actual transaction manager implementation* 
53
* *com.zfabrik.samples.jta-plain*: This module implements supporting functions for the actual applications.
54
* *com.zfabrik.samples.jta-plain.domain*: The domain definition module. This contains the JPA entities and a "Thingy Repository" implementation.
55 1 Henning Blohm
* *com.zfabrik.samples.jta-plain.web*: The simple web application that lists the database content and allows to add and delete thingies.
56 7 Henning Blohm
57 6 Henning Blohm
58 11 Henning Blohm
Let's start by looking at the supporting functions. 
59 9 Henning Blohm
60 11 Henning Blohm
TBC