blob: f9347e720ee1e4965af604ba602702e591f91043 [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>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ThreadContextMigrator (Apache Axis2)</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="ThreadContextMigrator (Apache Axis2)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":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="class-use/ThreadContextMigrator.html">Use</a></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="../../../../org/apache/axis2/util/TargetResolver.html" title="interface in org.apache.axis2.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/axis2/util/ThreadContextMigratorUtil.html" title="class in org.apache.axis2.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/axis2/util/ThreadContextMigrator.html" target="_top">Frames</a></li>
<li><a href="ThreadContextMigrator.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">org.apache.axis2.util</div>
<h2 title="Interface ThreadContextMigrator" class="title">Interface ThreadContextMigrator</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../org/apache/axis2/jaxws/addressing/migrator/EndpointContextMapMigrator.html" title="class in org.apache.axis2.jaxws.addressing.migrator">EndpointContextMapMigrator</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">ThreadContextMigrator</span></pre>
<div class="block">This is the interface for a piece of code that will plug into the user
programming model impl (e.g. JAX-WS impl) and will be invoked while on the
ultimate thread of execution. It is intended to provide a mechanism to
allow information to be migrated between the Axis2 contexts and thread
local storage.
<p/>
Note: It is up to each particular programming model impl to decide whether
or not they wish to make use of the ThreadContextMigrators.
<p/>
For each general MEP, here is the invocation pattern:
<p/>
[one-way inbound]
migrateContextToThread(req)
cleanupThread(req)
<p/>
[req/rsp inbound]
migrateContextToThread(req)
migrateThreadToContext(rsp)
cleanupContext(rsp)
cleanupThread(req)
<p/>
[one-way outbound]
migrateThreadToContext(req)
cleanupContext(req)
<p/>
[req/rsp outbound (both sync and async)]
migrateThreadToContext(req)
cleanupContext(req)
migrateContextToThread(rsp)
Note: there is no corresponding cleanupThread(rsp); one of the inbound
cases would need to handle this
<p/>
If a fault occurs during execution of one of the migrators, it will be
treated like any other service fault (i.e. like what will happen if we can't
deliver the message to a service or if a handler fails.
<p/>
The cleanup* methods can be expected to be invoked after any exeception
that occurs within the scope of the migration that would cause that scope
to be left so that the thread and/or context may be cleaned up properly.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== 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="../../../../org/apache/axis2/util/ThreadContextMigrator.html#cleanupContext-org.apache.axis2.context.MessageContext-">cleanupContext</a></span>(<a href="../../../../org/apache/axis2/context/MessageContext.html" title="class in org.apache.axis2.context">MessageContext</a>&nbsp;messageContext)</code>
<div class="block">This method will be invoked when the processing of the message is
guaranteed to be on the thread of execution that will be used in user
space, after all processing has completed (i.e. when the particular
processing of a message is unwinding.)</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/axis2/util/ThreadContextMigrator.html#cleanupThread-org.apache.axis2.context.MessageContext-">cleanupThread</a></span>(<a href="../../../../org/apache/axis2/context/MessageContext.html" title="class in org.apache.axis2.context">MessageContext</a>&nbsp;messageContext)</code>
<div class="block">This method will be invoked when the processing of the message is
guaranteed to still be on the thread of execution that was used in user
space, after all processing has completed (i.e. when the particular
processing of a message is unwinding.)</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/axis2/util/ThreadContextMigrator.html#migrateContextToThread-org.apache.axis2.context.MessageContext-">migrateContextToThread</a></span>(<a href="../../../../org/apache/axis2/context/MessageContext.html" title="class in org.apache.axis2.context">MessageContext</a>&nbsp;messageContext)</code>
<div class="block">This method will be invoked when the processing of the message is
guaranteed to be on the thread of execution that will be used in
user space.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/axis2/util/ThreadContextMigrator.html#migrateThreadToContext-org.apache.axis2.context.MessageContext-">migrateThreadToContext</a></span>(<a href="../../../../org/apache/axis2/context/MessageContext.html" title="class in org.apache.axis2.context">MessageContext</a>&nbsp;messageContext)</code>
<div class="block">This method will be invoked when the processing of the message is
guaranteed to still be on the thread of execution that was used in
user space.</div>
</td>
</tr>
</table>
</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="migrateContextToThread-org.apache.axis2.context.MessageContext-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>migrateContextToThread</h4>
<pre>void&nbsp;migrateContextToThread(<a href="../../../../org/apache/axis2/context/MessageContext.html" title="class in org.apache.axis2.context">MessageContext</a>&nbsp;messageContext)
throws <a href="../../../../org/apache/axis2/AxisFault.html" title="class in org.apache.axis2">AxisFault</a></pre>
<div class="block">This method will be invoked when the processing of the message is
guaranteed to be on the thread of execution that will be used in
user space. It will be invoked for incoming messages.
Implementations of this interface can use the information found in the
MessageContext to determine whether a request or response is being
processed.
(e.g. MessageContext.getAxisOperation().getMessageExchangePattern())</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>messageContext</code> - </dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/axis2/AxisFault.html" title="class in org.apache.axis2">AxisFault</a></code></dd>
</dl>
</li>
</ul>
<a name="cleanupThread-org.apache.axis2.context.MessageContext-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cleanupThread</h4>
<pre>void&nbsp;cleanupThread(<a href="../../../../org/apache/axis2/context/MessageContext.html" title="class in org.apache.axis2.context">MessageContext</a>&nbsp;messageContext)</pre>
<div class="block">This method will be invoked when the processing of the message is
guaranteed to still be on the thread of execution that was used in user
space, after all processing has completed (i.e. when the particular
processing of a message is unwinding.) It provides a mechanism which can
be used to clean up the TLS.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>messageContext</code> - </dd>
</dl>
</li>
</ul>
<a name="migrateThreadToContext-org.apache.axis2.context.MessageContext-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>migrateThreadToContext</h4>
<pre>void&nbsp;migrateThreadToContext(<a href="../../../../org/apache/axis2/context/MessageContext.html" title="class in org.apache.axis2.context">MessageContext</a>&nbsp;messageContext)
throws <a href="../../../../org/apache/axis2/AxisFault.html" title="class in org.apache.axis2">AxisFault</a></pre>
<div class="block">This method will be invoked when the processing of the message is
guaranteed to still be on the thread of execution that was used in
user space. It will be invoked for both outgoing messages.
Implementations of this interface can use the information found in the
MessageContext to determine whether a request or response is being
processed.
(e.g. MessageContext.getAxisOperation().getMessageExchangePattern())</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>messageContext</code> - </dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/apache/axis2/AxisFault.html" title="class in org.apache.axis2">AxisFault</a></code></dd>
</dl>
</li>
</ul>
<a name="cleanupContext-org.apache.axis2.context.MessageContext-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>cleanupContext</h4>
<pre>void&nbsp;cleanupContext(<a href="../../../../org/apache/axis2/context/MessageContext.html" title="class in org.apache.axis2.context">MessageContext</a>&nbsp;messageContext)</pre>
<div class="block">This method will be invoked when the processing of the message is
guaranteed to be on the thread of execution that will be used in user
space, after all processing has completed (i.e. when the particular
processing of a message is unwinding.) It provides a mechanism which can
be used to clean up the MessageContext or restore TLS.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>messageContext</code> - </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="class-use/ThreadContextMigrator.html">Use</a></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="../../../../org/apache/axis2/util/TargetResolver.html" title="interface in org.apache.axis2.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/axis2/util/ThreadContextMigratorUtil.html" title="class in org.apache.axis2.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/axis2/util/ThreadContextMigrator.html" target="_top">Frames</a></li>
<li><a href="ThreadContextMigrator.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 ======= -->
<p class="legalCopy"><small>Copyright &copy; <a href="https://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</small></p>
</body>
</html>