154 lines
8.4 KiB
HTML
154 lines
8.4 KiB
HTML
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
<!DOCTYPE html
|
||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
|
<html lang="en-us" xml:lang="en-us">
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
|
<meta name="security" content="public" />
|
||
|
<meta name="Robots" content="index,follow" />
|
||
|
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
|
||
|
<meta name="DC.Type" content="reference" />
|
||
|
<meta name="DC.Title" content="Commitment control" />
|
||
|
<meta name="abstract" content="" />
|
||
|
<meta name="description" content="" />
|
||
|
<meta name="copyright" content="(C) Copyright IBM Corporation 2006" />
|
||
|
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 2006" />
|
||
|
<meta name="DC.Format" content="XHTML" />
|
||
|
<meta name="DC.Identifier" content="rlacmt" />
|
||
|
<meta name="DC.Language" content="en-us" />
|
||
|
<!-- All rights reserved. Licensed Materials Property of IBM -->
|
||
|
<!-- US Government Users Restricted Rights -->
|
||
|
<!-- Use, duplication or disclosure restricted by -->
|
||
|
<!-- GSA ADP Schedule Contract with IBM Corp. -->
|
||
|
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
|
||
|
<link rel="stylesheet" type="text/css" href="./ic.css" />
|
||
|
<title>Commitment control</title>
|
||
|
</head>
|
||
|
<body id="rlacmt"><a name="rlacmt"><!-- --></a>
|
||
|
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
|
||
|
<h1 class="topictitle1">Commitment control</h1>
|
||
|
<div><p></p>
|
||
|
<div class="section"><p>Through commitment control, your Java™ program has another level of control
|
||
|
over changing a file. With commitment control turned on, transactions to a
|
||
|
file are pending until they are either committed or rolled back. If committed,
|
||
|
all changes are put to the file. If rolled back, all changes are discarded.
|
||
|
The transaction can be changing an existing record, adding a record, deleting
|
||
|
a record, or even reading a record depending on the commitment control lock
|
||
|
level specified on the open().</p>
|
||
|
</div>
|
||
|
<div class="section"><p>The levels of commitment control are as follows:</p>
|
||
|
</div>
|
||
|
<div class="section"><ul><li><a href="javadoc/com/ibm/as400/access/AS400File.html#COMMIT_LOCK_LEVEL_ALL"> All</a> - Every record accessed in the file is locked until
|
||
|
the transaction is committed or rolled back.</li>
|
||
|
<li><a href="javadoc/com/ibm/as400/access/AS400File.html#COMMIT_LOCK_LEVEL_CHANGE"> Change</a> - Updated, added, and deleted records in the
|
||
|
file are locked until the transaction is committed or rolled back.</li>
|
||
|
<li><a href="javadoc/com/ibm/as400/access/AS400File.html#COMMIT_LOCK_LEVEL_CURSOR_STABILITY"> Cursor Stability</a> - Updated, added, and deleted records
|
||
|
in the file are locked until the transaction is committed or rolled back.
|
||
|
Records that are accessed but not changed are locked only until another record
|
||
|
is accessed.</li>
|
||
|
<li><a href="javadoc/com/ibm/as400/access/AS400File.html#COMMIT_LOCK_LEVEL_NONE"> None</a> - There is no commitment control on the file. Changes
|
||
|
are immediately put to the file and cannot be rolled back.</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<div class="section"><p>You can use the <a href="javadoc/com/ibm/as400/access/AS400File.html#STARTCOMMITMENTCONTROL(INT)"> startCommitmentControl()</a> method to start commitment
|
||
|
control. Commitment control applies to the AS400 <strong>connection</strong>. Once commitment
|
||
|
control is started for a connection, it applies to all files opened under
|
||
|
that connection from the time that commitment control was started. Files opened
|
||
|
before commitment control is started are not under commitment control. The
|
||
|
level of commitment control for individual files is specified on the <a href="javadoc/com/ibm/as400/access/AS400File.html#OPEN()">open()</a> method.
|
||
|
Specify <a href="javadoc/com/ibm/as400/access/AS400File.html#COMMIT_LOCK_LEVEL_DEFAULT"> COMMIT_LOCK_LEVEL_DEFAULT</a> to use the same level of commitment
|
||
|
control as was specified on the startCommitmentControl() method.</p>
|
||
|
</div>
|
||
|
<div class="section"><p>For example:</p>
|
||
|
</div>
|
||
|
<div class="section"><div class="p"><pre> // Create an AS400 object, the files exist on this
|
||
|
// server.
|
||
|
AS400 sys = new AS400("mySystem.myCompany.com");
|
||
|
|
||
|
// Create three file objects
|
||
|
SequentialFile myFile = new SequentialFile(sys, "/QSYS.LIB/MYLIB.LIB/MYFILE.FILE/%FILE%.MBR");
|
||
|
SequentialFile yourFile = new SequentialFile(sys, "/QSYS.LIB/YOURLIB.LIB/YOURFILE.FILE/%FILE%.MBR");
|
||
|
SequentialFile ourFile = new SequentialFile(sys, "/QSYS.LIB/OURLIB.LIB/OURFILE.FILE/%FILE%.MBR");
|
||
|
|
||
|
// Open yourFile before starting commitment control
|
||
|
// No commitment control applies to this file. The
|
||
|
// commit lock level parameter is ignored because
|
||
|
// commitment control is not started for the connection.
|
||
|
yourFile.setRecordFormat(new YOURFILEFormat());
|
||
|
yourFile.open(AS400File.READ_WRITE, 0, AS400File.COMMIT_LOCK_LEVEL_DEFAULT);
|
||
|
|
||
|
// Start commitment control for the connection.
|
||
|
// Note: Any of the three files might be used for
|
||
|
// this call to startCommitmentControl().
|
||
|
myFile.startCommitmentControl(AS400File.COMMIT_LOCK_LEVEL_CHANGE);
|
||
|
|
||
|
// Open myFile and ourFile
|
||
|
myFile.setRecordFormat(new MYFILEFormat());
|
||
|
|
||
|
// Use the same commit lock level as specified
|
||
|
// when commitment control was started
|
||
|
myFile.open(AS400File.WRITE_ONLY, 0, COMMIT_LOCK_LEVEL_DEFAULT);
|
||
|
|
||
|
ourFile.setRecordFormat(new OURFILEFormat());
|
||
|
// Specify a different commit lock level than
|
||
|
// when commitment control was started
|
||
|
ourFile.open(AS400File.READ_WRITE, 0, COMMIT_LOCK_LEVEL_CURSOR_STABILITY);
|
||
|
|
||
|
// write and update records in all three files
|
||
|
....
|
||
|
|
||
|
// Commit the changes for files myFile and ourFile.
|
||
|
// Note that the commit commits all changes for the connection
|
||
|
// even though it is invoked on only one AS400File object.
|
||
|
myFile.commit();
|
||
|
// Close the files
|
||
|
myFile.close();
|
||
|
yourFile.close();
|
||
|
ourFile.close();
|
||
|
|
||
|
// End commitment control
|
||
|
// This ends commitment control for the connection.
|
||
|
ourFile.endCommitmentControl();
|
||
|
|
||
|
// Disconnect since I am done using record-level access
|
||
|
sys.disconnectService(AS400.RECORDACCESS);</pre>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="section"><p>The <a href="javadoc/com/ibm/as400/access/AS400File.html#COMMIT()">commit()</a> method commits all transactions since the last
|
||
|
commit boundary for the <strong>connection</strong>. The <a href="javadoc/com/ibm/as400/access/AS400File.html#ROLLBACK()"> rollback()</a> method discards all transactions since the
|
||
|
last commit boundary for the <strong>connection</strong>. Commitment control for a connection
|
||
|
is ended through the <a href="javadoc/com/ibm/as400/access/AS400File.html#ENDCOMMITMENTCONTROL()"> endCommitmentControl()</a> method. If a file is closed before
|
||
|
invoking the commit() or rollback() method, all uncommitted transactions are
|
||
|
rolled back. All files opened under commitment control must be closed before
|
||
|
the endCommitmentControl() method is called.</p>
|
||
|
</div>
|
||
|
<div class="section"><p>The following examples shows how to start commitment control,
|
||
|
commit or roll back functions, and then end commitment control:</p>
|
||
|
</div>
|
||
|
<div class="section"><div class="p"><pre> // ... assume the AS400 object and file have been
|
||
|
// instantiated.
|
||
|
|
||
|
// Start commitment control for *CHANGE
|
||
|
aFile.startCommitmentControl(AS400File.COMMIT_LOCK_LEVEL_CHANGE);
|
||
|
|
||
|
// ... open the file and do several changes. For
|
||
|
// example, update, add or delete records.
|
||
|
|
||
|
// Based on a flag either save or discard the
|
||
|
// transactions.
|
||
|
if (saveChanges)
|
||
|
aFile.commit();
|
||
|
else
|
||
|
aFile.rollback();
|
||
|
|
||
|
// Close the file
|
||
|
aFile.close();
|
||
|
|
||
|
// End commitment control for the connection.
|
||
|
aFile.endCommitmentControl();</pre>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
</body>
|
||
|
</html>
|