blob: 3d503e40680bb4477a25fd349f0d0ce38715a606 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>XASession</title>
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="XASession";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../javax/jms/XAQueueSession.html" title="interface in javax.jms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../javax/jms/XATopicConnection.html" title="interface in javax.jms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?javax/jms/XASession.html" target="_top">Frames</a></li>
<li><a href="XASession.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">javax.jms</div>
<h2 title="Interface XASession" class="title">Interface XASession</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd>java.lang.AutoCloseable, java.lang.Runnable, <a href="../../javax/jms/Session.html" title="interface in javax.jms">Session</a></dd>
</dl>
<dl>
<dt>All Known Subinterfaces:</dt>
<dd><a href="../../javax/jms/XAQueueSession.html" title="interface in javax.jms">XAQueueSession</a>, <a href="../../javax/jms/XATopicSession.html" title="interface in javax.jms">XATopicSession</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">XASession</span>
extends <a href="../../javax/jms/Session.html" title="interface in javax.jms">Session</a></pre>
<div class="block">The <code>XASession</code> interface extends the capability of <code>Session</code> by adding access to a JMS provider's
support for the Java Transaction API (JTA) (optional). This support takes the form of a
<code>javax.transaction.xa.XAResource</code> object. The functionality of this object closely resembles that defined by
the standard X/Open XA Resource interface.
<p>
An application server controls the transactional assignment of an <code>XASession</code> by obtaining its
<code>XAResource</code>. It uses the <code>XAResource</code> to assign the session to a transaction, prepare and commit work on
the transaction, and so on.
<p>
An <code>XAResource</code> provides some fairly sophisticated facilities for interleaving work on multiple transactions,
recovering a list of transactions in progress, and so on. A JTA aware JMS provider must fully implement this
functionality. This could be done by using the services of a database that supports XA, or a JMS provider may choose
to implement this functionality from scratch.
<p>
A client of the application server is given what it thinks is a regular JMS <code>Session</code>. Behind the scenes, the
application server controls the transaction management of the underlying <code>XASession</code>.
<p>
The <code>XASession</code> interface is optional. JMS providers are not required to support this interface. This interface
is for use by JMS providers to support transactional environments. Client programs are strongly encouraged to use the
transactional support available in their environment, rather than use these XA interfaces directly.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>JMS 1.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../javax/jms/Session.html" title="interface in javax.jms"><code>Session</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.javax.jms.Session">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;javax.jms.<a href="../../javax/jms/Session.html" title="interface in javax.jms">Session</a></h3>
<code><a href="../../javax/jms/Session.html#AUTO_ACKNOWLEDGE">AUTO_ACKNOWLEDGE</a>, <a href="../../javax/jms/Session.html#CLIENT_ACKNOWLEDGE">CLIENT_ACKNOWLEDGE</a>, <a href="../../javax/jms/Session.html#DUPS_OK_ACKNOWLEDGE">DUPS_OK_ACKNOWLEDGE</a>, <a href="../../javax/jms/Session.html#SESSION_TRANSACTED">SESSION_TRANSACTED</a></code></li>
</ul>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/jms/XASession.html#commit--">commit</a></span>()</code>
<div class="block">Throws a <code>TransactionInProgressException</code>, since it should not be called for an <code>XASession</code> object.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../javax/jms/Session.html" title="interface in javax.jms">Session</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/jms/XASession.html#getSession--">getSession</a></span>()</code>
<div class="block">Gets the session associated with this <code>XASession</code>.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/jms/XASession.html#getTransacted--">getTransacted</a></span>()</code>
<div class="block">Indicates whether the session is in transacted mode.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>javax.transaction.xa.XAResource</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/jms/XASession.html#getXAResource--">getXAResource</a></span>()</code>
<div class="block">Returns an XA resource to the caller.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/jms/XASession.html#rollback--">rollback</a></span>()</code>
<div class="block">Throws a <code>TransactionInProgressException</code>, since it should not be called for an <code>XASession</code> object.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.jms.Session">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;javax.jms.<a href="../../javax/jms/Session.html" title="interface in javax.jms">Session</a></h3>
<code><a href="../../javax/jms/Session.html#close--">close</a>, <a href="../../javax/jms/Session.html#createBrowser-javax.jms.Queue-">createBrowser</a>, <a href="../../javax/jms/Session.html#createBrowser-javax.jms.Queue-java.lang.String-">createBrowser</a>, <a href="../../javax/jms/Session.html#createBytesMessage--">createBytesMessage</a>, <a href="../../javax/jms/Session.html#createConsumer-javax.jms.Destination-">createConsumer</a>, <a href="../../javax/jms/Session.html#createConsumer-javax.jms.Destination-java.lang.String-">createConsumer</a>, <a href="../../javax/jms/Session.html#createConsumer-javax.jms.Destination-java.lang.String-boolean-">createConsumer</a>, <a href="../../javax/jms/Session.html#createDurableConsumer-javax.jms.Topic-java.lang.String-">createDurableConsumer</a>, <a href="../../javax/jms/Session.html#createDurableConsumer-javax.jms.Topic-java.lang.String-java.lang.String-boolean-">createDurableConsumer</a>, <a href="../../javax/jms/Session.html#createDurableSubscriber-javax.jms.Topic-java.lang.String-">createDurableSubscriber</a>, <a href="../../javax/jms/Session.html#createDurableSubscriber-javax.jms.Topic-java.lang.String-java.lang.String-boolean-">createDurableSubscriber</a>, <a href="../../javax/jms/Session.html#createMapMessage--">createMapMessage</a>, <a href="../../javax/jms/Session.html#createMessage--">createMessage</a>, <a href="../../javax/jms/Session.html#createObjectMessage--">createObjectMessage</a>, <a href="../../javax/jms/Session.html#createObjectMessage-java.io.Serializable-">createObjectMessage</a>, <a href="../../javax/jms/Session.html#createProducer-javax.jms.Destination-">createProducer</a>, <a href="../../javax/jms/Session.html#createQueue-java.lang.String-">createQueue</a>, <a href="../../javax/jms/Session.html#createSharedConsumer-javax.jms.Topic-java.lang.String-">createSharedConsumer</a>, <a href="../../javax/jms/Session.html#createSharedConsumer-javax.jms.Topic-java.lang.String-java.lang.String-">createSharedConsumer</a>, <a href="../../javax/jms/Session.html#createSharedDurableConsumer-javax.jms.Topic-java.lang.String-">createSharedDurableConsumer</a>, <a href="../../javax/jms/Session.html#createSharedDurableConsumer-javax.jms.Topic-java.lang.String-java.lang.String-">createSharedDurableConsumer</a>, <a href="../../javax/jms/Session.html#createStreamMessage--">createStreamMessage</a>, <a href="../../javax/jms/Session.html#createTemporaryQueue--">createTemporaryQueue</a>, <a href="../../javax/jms/Session.html#createTemporaryTopic--">createTemporaryTopic</a>, <a href="../../javax/jms/Session.html#createTextMessage--">createTextMessage</a>, <a href="../../javax/jms/Session.html#createTextMessage-java.lang.String-">createTextMessage</a>, <a href="../../javax/jms/Session.html#createTopic-java.lang.String-">createTopic</a>, <a href="../../javax/jms/Session.html#getAcknowledgeMode--">getAcknowledgeMode</a>, <a href="../../javax/jms/Session.html#getMessageListener--">getMessageListener</a>, <a href="../../javax/jms/Session.html#recover--">recover</a>, <a href="../../javax/jms/Session.html#run--">run</a>, <a href="../../javax/jms/Session.html#setMessageListener-javax.jms.MessageListener-">setMessageListener</a>, <a href="../../javax/jms/Session.html#unsubscribe-java.lang.String-">unsubscribe</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getSession--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSession</h4>
<pre><a href="../../javax/jms/Session.html" title="interface in javax.jms">Session</a>&nbsp;getSession()
throws <a href="../../javax/jms/JMSException.html" title="class in javax.jms">JMSException</a></pre>
<div class="block">Gets the session associated with this <code>XASession</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the session object</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../javax/jms/JMSException.html" title="class in javax.jms">JMSException</a></code> - if an internal error occurs.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>JMS 1.1</dd>
</dl>
</li>
</ul>
<a name="getXAResource--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getXAResource</h4>
<pre>javax.transaction.xa.XAResource&nbsp;getXAResource()</pre>
<div class="block">Returns an XA resource to the caller.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an XA resource to the caller</dd>
</dl>
</li>
</ul>
<a name="getTransacted--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTransacted</h4>
<pre>boolean&nbsp;getTransacted()
throws <a href="../../javax/jms/JMSException.html" title="class in javax.jms">JMSException</a></pre>
<div class="block">Indicates whether the session is in transacted mode.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../javax/jms/Session.html#getTransacted--">getTransacted</a></code>&nbsp;in interface&nbsp;<code><a href="../../javax/jms/Session.html" title="interface in javax.jms">Session</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../javax/jms/JMSException.html" title="class in javax.jms">JMSException</a></code> - if the JMS provider fails to return the transaction mode due to some internal error.</dd>
</dl>
</li>
</ul>
<a name="commit--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>commit</h4>
<pre>void&nbsp;commit()
throws <a href="../../javax/jms/JMSException.html" title="class in javax.jms">JMSException</a></pre>
<div class="block">Throws a <code>TransactionInProgressException</code>, since it should not be called for an <code>XASession</code> object.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../javax/jms/Session.html#commit--">commit</a></code>&nbsp;in interface&nbsp;<code><a href="../../javax/jms/Session.html" title="interface in javax.jms">Session</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../javax/jms/TransactionInProgressException.html" title="class in javax.jms">TransactionInProgressException</a></code> - if the method is called on an <code>XASession</code>.</dd>
<dd><code><a href="../../javax/jms/IllegalStateException.html" title="class in javax.jms">IllegalStateException</a></code> - <ul>
<li>the session is not using a local transaction
<li>this method has been called by a <tt>CompletionListener</tt> callback method on its own <tt>Session</tt></li>
</ul></dd>
<dd><code><a href="../../javax/jms/JMSException.html" title="class in javax.jms">JMSException</a></code> - if the JMS provider fails to commit the transaction due to some internal error.</dd>
<dd><code><a href="../../javax/jms/TransactionRolledBackException.html" title="class in javax.jms">TransactionRolledBackException</a></code> - if the transaction is rolled back due to some internal error during commit.</dd>
</dl>
</li>
</ul>
<a name="rollback--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>rollback</h4>
<pre>void&nbsp;rollback()
throws <a href="../../javax/jms/JMSException.html" title="class in javax.jms">JMSException</a></pre>
<div class="block">Throws a <code>TransactionInProgressException</code>, since it should not be called for an <code>XASession</code> object.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../javax/jms/Session.html#rollback--">rollback</a></code>&nbsp;in interface&nbsp;<code><a href="../../javax/jms/Session.html" title="interface in javax.jms">Session</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../javax/jms/TransactionInProgressException.html" title="class in javax.jms">TransactionInProgressException</a></code> - if the method is called on an <code>XASession</code>.</dd>
<dd><code><a href="../../javax/jms/IllegalStateException.html" title="class in javax.jms">IllegalStateException</a></code> - <ul>
<li>the session is not using a local transaction
<li>this method has been called by a <tt>CompletionListener</tt> callback method on its own <tt>Session</tt></li>
</ul></dd>
<dd><code><a href="../../javax/jms/JMSException.html" title="class in javax.jms">JMSException</a></code> - if the JMS provider fails to roll back the transaction due to some internal error.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../javax/jms/XAQueueSession.html" title="interface in javax.jms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../javax/jms/XATopicConnection.html" title="interface in javax.jms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?javax/jms/XASession.html" target="_top">Frames</a></li>
<li><a href="XASession.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>