blob: 365dcaf0c66544144cd5c5ad63504eeed04a9bac [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
PersistentStorageManager (Apache Sandesha2)
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="PersistentStorageManager (Apache Sandesha2)";
}
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<HR>
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/PersistentStorageManager.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentSenderBeanMgr.html" title="class in org.apache.sandesha2.storage.jdbc"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/sandesha2/storage/jdbc/TransactionLock.html" title="class in org.apache.sandesha2.storage.jdbc"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="PersistentStorageManager.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.sandesha2.storage.jdbc</FONT>
<BR>
Class PersistentStorageManager</H2>
<PRE>
java.lang.Object
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">org.apache.sandesha2.storage.StorageManager</A>
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.sandesha2.storage.jdbc.PersistentStorageManager</B>
</PRE>
<HR>
<DL>
<DT><PRE>public class <B>PersistentStorageManager</B><DT>extends <A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></DL>
</PRE>
<P>
A Storage Manager implementation for managing Sandesha2 beans.
<p/>
Needs this parameter in module.xml or axis2.xml :
<p/>
db.driver JDBC Driver class name
db.connectionstring JDBC connection string
db.user Data Base user name
db.password Data Base user password
<p/>
Transactions are supposed to be attached to a thread (see inMemoryStorageManager)
hence the ThreadLocal threadTransaction variable (instead of the transactions HashMap
used by inMemoryStorageManager).
<p/>
MessageContexts are stored in a HashMap, as in inMemoryStorageManager, AND in DataBase
as backup in case of failure.
<P>
<P>
<HR>
<P>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#PersistentStorageManager(org.apache.axis2.context.ConfigurationContext)">PersistentStorageManager</A></B>(org.apache.axis2.context.ConfigurationContext&nbsp;context)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#acquireTransactionLock()">acquireTransactionLock</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.sql.Connection</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#dbConnect()">dbConnect</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.sql.Connection</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#getDbConnection()">getDbConnection</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the connection attached to the current transaction if exists
or the "common" connection.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/sandesha2/workers/SandeshaThread.html" title="class in org.apache.sandesha2.workers">SandeshaThread</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#getInvoker()">getInvoker</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the invoker that hands inbound messages over to the application.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/sandesha2/storage/beanmanagers/InvokerBeanMgr.html" title="interface in org.apache.sandesha2.storage.beanmanagers">InvokerBeanMgr</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#getInvokerBeanMgr()">getInvokerBeanMgr</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/sandesha2/polling/PollingManager.html" title="class in org.apache.sandesha2.polling">PollingManager</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#getPollingManager()">getPollingManager</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the thread that generates polling requests to send to remote endpoints.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/sandesha2/storage/beanmanagers/RMDBeanMgr.html" title="interface in org.apache.sandesha2.storage.beanmanagers">RMDBeanMgr</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#getRMDBeanMgr()">getRMDBeanMgr</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/sandesha2/storage/beanmanagers/RMSBeanMgr.html" title="interface in org.apache.sandesha2.storage.beanmanagers">RMSBeanMgr</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#getRMSBeanMgr()">getRMSBeanMgr</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/sandesha2/workers/SandeshaThread.html" title="class in org.apache.sandesha2.workers">SandeshaThread</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#getSender()">getSender</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.html" title="interface in org.apache.sandesha2.storage.beanmanagers">SenderBeanMgr</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#getSenderBeanMgr()">getSenderBeanMgr</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/apache/sandesha2/storage/Transaction.html" title="interface in org.apache.sandesha2.storage">Transaction</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#getTransaction()">getTransaction</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#hasUserTransaction(org.apache.axis2.context.MessageContext)">hasUserTransaction</A></B>(org.apache.axis2.context.MessageContext&nbsp;msg)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If there is no user transaction in scope then we can optimize the sending / invoking of a
message.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#initStorage(org.apache.axis2.description.AxisModule)">initStorage</A></B>(org.apache.axis2.description.AxisModule&nbsp;moduleDesc)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#releaseTransactionLock()">releaseTransactionLock</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#removeMessageContext(java.lang.String)">removeMessageContext</A></B>(java.lang.String&nbsp;key)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#removeTransaction()">removeTransaction</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#requiresMessageSerialization()">requiresMessageSerialization</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.apache.axis2.context.MessageContext</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#retrieveMessageContext(java.lang.String, org.apache.axis2.context.ConfigurationContext)">retrieveMessageContext</A></B>(java.lang.String&nbsp;key,
org.apache.axis2.context.ConfigurationContext&nbsp;configContext)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#shutdown()">shutdown</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#storeMessageContext(java.lang.String, org.apache.axis2.context.MessageContext)">storeMessageContext</A></B>(java.lang.String&nbsp;key,
org.apache.axis2.context.MessageContext&nbsp;msgContext)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html#updateMessageContext(java.lang.String, org.apache.axis2.context.MessageContext)">updateMessageContext</A></B>(java.lang.String&nbsp;key,
org.apache.axis2.context.MessageContext&nbsp;msgContext)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.sandesha2.storage.StorageManager"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class org.apache.sandesha2.storage.<A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#getContext()">getContext</A>, <A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#setContext(org.apache.axis2.context.ConfigurationContext)">setContext</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="PersistentStorageManager(org.apache.axis2.context.ConfigurationContext)"><!-- --></A><H3>
PersistentStorageManager</H3>
<PRE>
public <B>PersistentStorageManager</B>(org.apache.axis2.context.ConfigurationContext&nbsp;context)
throws <A HREF="../../../../../org/apache/sandesha2/SandeshaException.html" title="class in org.apache.sandesha2">SandeshaException</A></PRE>
<DL>
<DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/sandesha2/SandeshaException.html" title="class in org.apache.sandesha2">SandeshaException</A></CODE></DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="getInvoker()"><!-- --></A><H3>
getInvoker</H3>
<PRE>
public <A HREF="../../../../../org/apache/sandesha2/workers/SandeshaThread.html" title="class in org.apache.sandesha2.workers">SandeshaThread</A> <B>getInvoker</B>()</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#getInvoker()">StorageManager</A></CODE></B></DD>
<DD>Get the invoker that hands inbound messages over to the application. This
may be null, in which case the inbound messages will be dispatched directly
to the application without switching them over to the invoker.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#getInvoker()">getInvoker</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>null if messages should be delivered directly to the application,
otherwise return a SandeshaThread.</DL>
</DD>
</DL>
<HR>
<A NAME="getPollingManager()"><!-- --></A><H3>
getPollingManager</H3>
<PRE>
public <A HREF="../../../../../org/apache/sandesha2/polling/PollingManager.html" title="class in org.apache.sandesha2.polling">PollingManager</A> <B>getPollingManager</B>()</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#getPollingManager()">StorageManager</A></CODE></B></DD>
<DD>Get the thread that generates polling requests to send to remote endpoints.
This may be null, in which case the storage manager does not support polling.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#getPollingManager()">getPollingManager</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>null if polling is diabled, otherwise return a PollingManager.</DL>
</DD>
</DL>
<HR>
<A NAME="getSender()"><!-- --></A><H3>
getSender</H3>
<PRE>
public <A HREF="../../../../../org/apache/sandesha2/workers/SandeshaThread.html" title="class in org.apache.sandesha2.workers">SandeshaThread</A> <B>getSender</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#getSender()">getSender</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="shutdown()"><!-- --></A><H3>
shutdown</H3>
<PRE>
public void <B>shutdown</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#shutdown()">shutdown</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getInvokerBeanMgr()"><!-- --></A><H3>
getInvokerBeanMgr</H3>
<PRE>
public <A HREF="../../../../../org/apache/sandesha2/storage/beanmanagers/InvokerBeanMgr.html" title="interface in org.apache.sandesha2.storage.beanmanagers">InvokerBeanMgr</A> <B>getInvokerBeanMgr</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#getInvokerBeanMgr()">getInvokerBeanMgr</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getRMDBeanMgr()"><!-- --></A><H3>
getRMDBeanMgr</H3>
<PRE>
public <A HREF="../../../../../org/apache/sandesha2/storage/beanmanagers/RMDBeanMgr.html" title="interface in org.apache.sandesha2.storage.beanmanagers">RMDBeanMgr</A> <B>getRMDBeanMgr</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#getRMDBeanMgr()">getRMDBeanMgr</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getRMSBeanMgr()"><!-- --></A><H3>
getRMSBeanMgr</H3>
<PRE>
public <A HREF="../../../../../org/apache/sandesha2/storage/beanmanagers/RMSBeanMgr.html" title="interface in org.apache.sandesha2.storage.beanmanagers">RMSBeanMgr</A> <B>getRMSBeanMgr</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#getRMSBeanMgr()">getRMSBeanMgr</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getSenderBeanMgr()"><!-- --></A><H3>
getSenderBeanMgr</H3>
<PRE>
public <A HREF="../../../../../org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.html" title="interface in org.apache.sandesha2.storage.beanmanagers">SenderBeanMgr</A> <B>getSenderBeanMgr</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#getSenderBeanMgr()">getSenderBeanMgr</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="requiresMessageSerialization()"><!-- --></A><H3>
requiresMessageSerialization</H3>
<PRE>
public boolean <B>requiresMessageSerialization</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#requiresMessageSerialization()">requiresMessageSerialization</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="hasUserTransaction(org.apache.axis2.context.MessageContext)"><!-- --></A><H3>
hasUserTransaction</H3>
<PRE>
public boolean <B>hasUserTransaction</B>(org.apache.axis2.context.MessageContext&nbsp;msg)</PRE>
<DL>
<DD><B>Description copied from class: <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#hasUserTransaction(org.apache.axis2.context.MessageContext)">StorageManager</A></CODE></B></DD>
<DD>If there is no user transaction in scope then we can optimize the sending / invoking of a
message. This method allows the StorageManager to tell the core Sandesha code if there
is a transaction in scope.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#hasUserTransaction(org.apache.axis2.context.MessageContext)">hasUserTransaction</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>true, if there is a user transaction in scope.</DL>
</DD>
</DL>
<HR>
<A NAME="getTransaction()"><!-- --></A><H3>
getTransaction</H3>
<PRE>
public <A HREF="../../../../../org/apache/sandesha2/storage/Transaction.html" title="interface in org.apache.sandesha2.storage">Transaction</A> <B>getTransaction</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#getTransaction()">getTransaction</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="removeTransaction()"><!-- --></A><H3>
removeTransaction</H3>
<PRE>
public void <B>removeTransaction</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getDbConnection()"><!-- --></A><H3>
getDbConnection</H3>
<PRE>
public java.sql.Connection <B>getDbConnection</B>()</PRE>
<DL>
<DD>Returns the connection attached to the current transaction if exists
or the "common" connection.
<P>
<DD><DL>
<DT><B>Returns:</B><DD>Data Base Connection</DL>
</DD>
</DL>
<HR>
<A NAME="initStorage(org.apache.axis2.description.AxisModule)"><!-- --></A><H3>
initStorage</H3>
<PRE>
public void <B>initStorage</B>(org.apache.axis2.description.AxisModule&nbsp;moduleDesc)
throws <A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#initStorage(org.apache.axis2.description.AxisModule)">initStorage</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></CODE></DL>
</DD>
</DL>
<HR>
<A NAME="dbConnect()"><!-- --></A><H3>
dbConnect</H3>
<PRE>
public java.sql.Connection <B>dbConnect</B>()
throws <A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></PRE>
<DL>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></CODE></DL>
</DD>
</DL>
<HR>
<A NAME="retrieveMessageContext(java.lang.String, org.apache.axis2.context.ConfigurationContext)"><!-- --></A><H3>
retrieveMessageContext</H3>
<PRE>
public org.apache.axis2.context.MessageContext <B>retrieveMessageContext</B>(java.lang.String&nbsp;key,
org.apache.axis2.context.ConfigurationContext&nbsp;configContext)
throws <A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#retrieveMessageContext(java.lang.String, org.apache.axis2.context.ConfigurationContext)">retrieveMessageContext</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></CODE></DL>
</DD>
</DL>
<HR>
<A NAME="storeMessageContext(java.lang.String, org.apache.axis2.context.MessageContext)"><!-- --></A><H3>
storeMessageContext</H3>
<PRE>
public void <B>storeMessageContext</B>(java.lang.String&nbsp;key,
org.apache.axis2.context.MessageContext&nbsp;msgContext)
throws <A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#storeMessageContext(java.lang.String, org.apache.axis2.context.MessageContext)">storeMessageContext</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></CODE></DL>
</DD>
</DL>
<HR>
<A NAME="updateMessageContext(java.lang.String, org.apache.axis2.context.MessageContext)"><!-- --></A><H3>
updateMessageContext</H3>
<PRE>
public void <B>updateMessageContext</B>(java.lang.String&nbsp;key,
org.apache.axis2.context.MessageContext&nbsp;msgContext)
throws <A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#updateMessageContext(java.lang.String, org.apache.axis2.context.MessageContext)">updateMessageContext</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></CODE></DL>
</DD>
</DL>
<HR>
<A NAME="removeMessageContext(java.lang.String)"><!-- --></A><H3>
removeMessageContext</H3>
<PRE>
public void <B>removeMessageContext</B>(java.lang.String&nbsp;key)
throws <A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html#removeMessageContext(java.lang.String)">removeMessageContext</A></CODE> in class <CODE><A HREF="../../../../../org/apache/sandesha2/storage/StorageManager.html" title="class in org.apache.sandesha2.storage">StorageManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/apache/sandesha2/storage/SandeshaStorageException.html" title="class in org.apache.sandesha2.storage">SandeshaStorageException</A></CODE></DL>
</DD>
</DL>
<HR>
<A NAME="acquireTransactionLock()"><!-- --></A><H3>
acquireTransactionLock</H3>
<PRE>
public void <B>acquireTransactionLock</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="releaseTransactionLock()"><!-- --></A><H3>
releaseTransactionLock</H3>
<PRE>
public void <B>releaseTransactionLock</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/PersistentStorageManager.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/sandesha2/storage/jdbc/PersistentSenderBeanMgr.html" title="class in org.apache.sandesha2.storage.jdbc"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/sandesha2/storage/jdbc/TransactionLock.html" title="class in org.apache.sandesha2.storage.jdbc"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/apache/sandesha2/storage/jdbc/PersistentStorageManager.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="PersistentStorageManager.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
Copyright © <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>