blob: 5c995ce767ea5487c7821e87c2c72b76891a75e1 [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>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>STSTokenValidator (Apache CXF JavaDoc 3.1.0 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="STSTokenValidator (Apache CXF JavaDoc 3.1.0 API)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><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/STSTokenValidator.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 class="aboutLanguage"><em>Apache CXF API</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/cxf/ws/security/trust/STSStaxTokenValidator.html" title="class in org.apache.cxf.ws.security.trust"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/cxf/ws/security/trust/STSUtils.html" title="class in org.apache.cxf.ws.security.trust"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/cxf/ws/security/trust/STSTokenValidator.html" target="_top">Frames</a></li>
<li><a href="STSTokenValidator.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All 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><a href="#constructor_summary">Constr</a>&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><a href="#constructor_detail">Constr</a>&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.cxf.ws.security.trust</div>
<h2 title="Class STSTokenValidator" class="title">Class STSTokenValidator</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.cxf.ws.security.trust.STSTokenValidator</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>org.apache.wss4j.dom.validate.Validator</dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">STSTokenValidator</span>
extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements org.apache.wss4j.dom.validate.Validator</pre>
<div class="block">A WSS4J-based Validator to validate a received WS-Security credential by dispatching
it to a STS via WS-Trust. The default binding is "validate", but "issue" is also possible
by setting the "useIssueBinding" property. In this case, the credentials are sent via
"OnBehalfOf" unless the "useOnBehalfOf" property is set to "false", in which case the
credentials are used depending on the security policy of the STS endpoint (e.g. in a
UsernameToken if this is what the policy requires). Setting "useOnBehalfOf" to "false" +
"useIssueBinding" to "true" only works for validating UsernameTokens.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#STSTokenValidator()">STSTokenValidator</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#STSTokenValidator(boolean)">STSTokenValidator</a></strong>(boolean&nbsp;alwaysValidateToSts)</code>
<div class="block">Construct a new instance.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/cxf/ws/security/trust/STSClient.html" title="class in org.apache.cxf.ws.security.trust">STSClient</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#getStsClient()">getStsClient</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/cxf/ws/security/tokenstore/TokenStore.html" title="interface in org.apache.cxf.ws.security.tokenstore">TokenStore</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#getTokenStore()">getTokenStore</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#isDisableCaching()">isDisableCaching</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#isUseIssueBinding()">isUseIssueBinding</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#isUseOnBehalfOf()">isUseOnBehalfOf</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#isValidatedLocally(org.apache.wss4j.dom.validate.Credential,%20org.apache.wss4j.dom.handler.RequestData)">isValidatedLocally</a></strong>(org.apache.wss4j.dom.validate.Credential&nbsp;credential,
org.apache.wss4j.dom.handler.RequestData&nbsp;data)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#setDisableCaching(boolean)">setDisableCaching</a></strong>(boolean&nbsp;disableCaching)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#setStsClient(org.apache.cxf.ws.security.trust.STSClient)">setStsClient</a></strong>(<a href="../../../../../../org/apache/cxf/ws/security/trust/STSClient.html" title="class in org.apache.cxf.ws.security.trust">STSClient</a>&nbsp;stsClient)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#setTokenStore(org.apache.cxf.ws.security.tokenstore.TokenStore)">setTokenStore</a></strong>(<a href="../../../../../../org/apache/cxf/ws/security/tokenstore/TokenStore.html" title="interface in org.apache.cxf.ws.security.tokenstore">TokenStore</a>&nbsp;tokenStore)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#setUseIssueBinding(boolean)">setUseIssueBinding</a></strong>(boolean&nbsp;useIssueBinding)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#setUseOnBehalfOf(boolean)">setUseOnBehalfOf</a></strong>(boolean&nbsp;useOnBehalfOf)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>org.apache.wss4j.dom.validate.Credential</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#validate(org.apache.wss4j.dom.validate.Credential,%20org.apache.wss4j.dom.handler.RequestData)">validate</a></strong>(org.apache.wss4j.dom.validate.Credential&nbsp;credential,
org.apache.wss4j.dom.handler.RequestData&nbsp;data)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>org.apache.wss4j.dom.validate.Credential</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/cxf/ws/security/trust/STSTokenValidator.html#validateWithSTS(org.apache.wss4j.dom.validate.Credential,%20org.apache.cxf.message.Message)">validateWithSTS</a></strong>(org.apache.wss4j.dom.validate.Credential&nbsp;credential,
<a href="../../../../../../org/apache/cxf/message/Message.html" title="interface in org.apache.cxf.message">Message</a>&nbsp;message)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="STSTokenValidator()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>STSTokenValidator</h4>
<pre>public&nbsp;STSTokenValidator()</pre>
</li>
</ul>
<a name="STSTokenValidator(boolean)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>STSTokenValidator</h4>
<pre>public&nbsp;STSTokenValidator(boolean&nbsp;alwaysValidateToSts)</pre>
<div class="block">Construct a new instance.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>alwaysValidateToSts</code> - whether to always validate the token to the STS</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="validate(org.apache.wss4j.dom.validate.Credential, org.apache.wss4j.dom.handler.RequestData)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validate</h4>
<pre>public&nbsp;org.apache.wss4j.dom.validate.Credential&nbsp;validate(org.apache.wss4j.dom.validate.Credential&nbsp;credential,
org.apache.wss4j.dom.handler.RequestData&nbsp;data)
throws org.apache.wss4j.common.ext.WSSecurityException</pre>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code>validate</code>&nbsp;in interface&nbsp;<code>org.apache.wss4j.dom.validate.Validator</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>org.apache.wss4j.common.ext.WSSecurityException</code></dd></dl>
</li>
</ul>
<a name="validateWithSTS(org.apache.wss4j.dom.validate.Credential, org.apache.cxf.message.Message)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateWithSTS</h4>
<pre>public&nbsp;org.apache.wss4j.dom.validate.Credential&nbsp;validateWithSTS(org.apache.wss4j.dom.validate.Credential&nbsp;credential,
<a href="../../../../../../org/apache/cxf/message/Message.html" title="interface in org.apache.cxf.message">Message</a>&nbsp;message)
throws org.apache.wss4j.common.ext.WSSecurityException</pre>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code>org.apache.wss4j.common.ext.WSSecurityException</code></dd></dl>
</li>
</ul>
<a name="isValidatedLocally(org.apache.wss4j.dom.validate.Credential, org.apache.wss4j.dom.handler.RequestData)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isValidatedLocally</h4>
<pre>protected&nbsp;boolean&nbsp;isValidatedLocally(org.apache.wss4j.dom.validate.Credential&nbsp;credential,
org.apache.wss4j.dom.handler.RequestData&nbsp;data)
throws org.apache.wss4j.common.ext.WSSecurityException</pre>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code>org.apache.wss4j.common.ext.WSSecurityException</code></dd></dl>
</li>
</ul>
<a name="isUseIssueBinding()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isUseIssueBinding</h4>
<pre>public&nbsp;boolean&nbsp;isUseIssueBinding()</pre>
</li>
</ul>
<a name="setUseIssueBinding(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setUseIssueBinding</h4>
<pre>public&nbsp;void&nbsp;setUseIssueBinding(boolean&nbsp;useIssueBinding)</pre>
</li>
</ul>
<a name="isUseOnBehalfOf()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isUseOnBehalfOf</h4>
<pre>public&nbsp;boolean&nbsp;isUseOnBehalfOf()</pre>
</li>
</ul>
<a name="setUseOnBehalfOf(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setUseOnBehalfOf</h4>
<pre>public&nbsp;void&nbsp;setUseOnBehalfOf(boolean&nbsp;useOnBehalfOf)</pre>
</li>
</ul>
<a name="getStsClient()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getStsClient</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/cxf/ws/security/trust/STSClient.html" title="class in org.apache.cxf.ws.security.trust">STSClient</a>&nbsp;getStsClient()</pre>
</li>
</ul>
<a name="setStsClient(org.apache.cxf.ws.security.trust.STSClient)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setStsClient</h4>
<pre>public&nbsp;void&nbsp;setStsClient(<a href="../../../../../../org/apache/cxf/ws/security/trust/STSClient.html" title="class in org.apache.cxf.ws.security.trust">STSClient</a>&nbsp;stsClient)</pre>
</li>
</ul>
<a name="getTokenStore()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTokenStore</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/cxf/ws/security/tokenstore/TokenStore.html" title="interface in org.apache.cxf.ws.security.tokenstore">TokenStore</a>&nbsp;getTokenStore()</pre>
</li>
</ul>
<a name="setTokenStore(org.apache.cxf.ws.security.tokenstore.TokenStore)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setTokenStore</h4>
<pre>public&nbsp;void&nbsp;setTokenStore(<a href="../../../../../../org/apache/cxf/ws/security/tokenstore/TokenStore.html" title="interface in org.apache.cxf.ws.security.tokenstore">TokenStore</a>&nbsp;tokenStore)</pre>
</li>
</ul>
<a name="isDisableCaching()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDisableCaching</h4>
<pre>public&nbsp;boolean&nbsp;isDisableCaching()</pre>
</li>
</ul>
<a name="setDisableCaching(boolean)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setDisableCaching</h4>
<pre>public&nbsp;void&nbsp;setDisableCaching(boolean&nbsp;disableCaching)</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><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/STSTokenValidator.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 class="aboutLanguage"><em>Apache CXF API</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/cxf/ws/security/trust/STSStaxTokenValidator.html" title="class in org.apache.cxf.ws.security.trust"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/cxf/ws/security/trust/STSUtils.html" title="class in org.apache.cxf.ws.security.trust"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/cxf/ws/security/trust/STSTokenValidator.html" target="_top">Frames</a></li>
<li><a href="STSTokenValidator.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All 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><a href="#constructor_summary">Constr</a>&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><a href="#constructor_detail">Constr</a>&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>Apache CXF</small></p>
</body>
</html>