Sample-jta-plain » History » Version 14
Henning Blohm, 27.09.2012 22:19
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 | 14 | Henning Blohm | When everything is up, go to http://localhost:8080/jta-plain. You see something like this: |
39 | 3 | Henning Blohm | |
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 |