<!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>Call (Apache Axis)</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="Call (Apache Axis)";
    }
//-->
</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/Call.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>Prev Class</li>
<li><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/xml/rpc/Call.html" target="_top">Frames</a></li>
<li><a href="Call.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><a href="#field_summary">Field</a>&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><a href="#field_detail">Field</a>&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.xml.rpc</div>
<h2 title="Interface Call" class="title">Interface Call</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/axis/client/Call.html" title="class in org.apache.axis.client">Call</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="strong">Call</span></pre>
<div class="block">The <code>javax.xml.rpc.Call</code> interface provides support
 for the dynamic invocation of a service endpoint. The
 <code>javax.xml.rpc.Service</code> interface acts as a factory
 for the creation of <code>Call</code> instances.
 <p>
 Once a <code>Call</code> instance is created, various setter
 and getter methods may be used to configure this <code>Call</code>
 instance.</div>
<dl><dt><span class="strong">Version:</span></dt>
  <dd>1.0</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>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#ENCODINGSTYLE_URI_PROPERTY">ENCODINGSTYLE_URI_PROPERTY</a></strong></code>
<div class="block">Standard property for encoding Style:  Encoding style specified
 as a namespace URI.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#OPERATION_STYLE_PROPERTY">OPERATION_STYLE_PROPERTY</a></strong></code>
<div class="block">Standard property for operation style.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#PASSWORD_PROPERTY">PASSWORD_PROPERTY</a></strong></code>
<div class="block">Standard property: Password for authentication
 Type: <code>java.lang.String</code></div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#SESSION_MAINTAIN_PROPERTY">SESSION_MAINTAIN_PROPERTY</a></strong></code>
<div class="block">Standard property: This boolean property is used by a service
 client to indicate whether or not it wants to participate in
 a session with a service endpoint.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#SOAPACTION_URI_PROPERTY">SOAPACTION_URI_PROPERTY</a></strong></code>
<div class="block">Standard property for SOAPAction.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#SOAPACTION_USE_PROPERTY">SOAPACTION_USE_PROPERTY</a></strong></code>
<div class="block">Standard property for SOAPAction.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#USERNAME_PROPERTY">USERNAME_PROPERTY</a></strong></code>
<div class="block">Standard property: User name for authentication
 Type: <code>java.lang.String</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>void</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#addParameter(java.lang.String,%20javax.xml.namespace.QName,%20java.lang.Class,%20javax.xml.rpc.ParameterMode)">addParameter</a></strong>(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;paramName,
            <a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;xmlType,
            <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;javaType,
            <a href="../../../javax/xml/rpc/ParameterMode.html" title="class in javax.xml.rpc">ParameterMode</a>&nbsp;parameterMode)</code>
<div class="block">Adds a parameter type and mode for a specific  operation.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#addParameter(java.lang.String,%20javax.xml.namespace.QName,%20javax.xml.rpc.ParameterMode)">addParameter</a></strong>(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;paramName,
            <a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;xmlType,
            <a href="../../../javax/xml/rpc/ParameterMode.html" title="class in javax.xml.rpc">ParameterMode</a>&nbsp;parameterMode)</code>
<div class="block">Adds a parameter type and mode for a specific  operation.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#getOperationName()">getOperationName</a></strong>()</code>
<div class="block">Gets the name of the operation to be invoked using this Call instance.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#getOutputParams()">getOutputParams</a></strong>()</code>
<div class="block">Returns a <code>Map</code> of {name, value} for the output parameters of
 the last invoked operation.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#getOutputValues()">getOutputValues</a></strong>()</code>
<div class="block">Returns a <code>List</code> values for the output parameters
 of the last invoked operation.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#getParameterTypeByName(java.lang.String)">getParameterTypeByName</a></strong>(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;paramName)</code>
<div class="block">Gets the XML type of a parameter by name.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#getPortTypeName()">getPortTypeName</a></strong>()</code>
<div class="block">Gets the qualified name of the port type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#getProperty(java.lang.String)">getProperty</a></strong>(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Gets the value of a named property.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#getPropertyNames()">getPropertyNames</a></strong>()</code>
<div class="block">Gets the names of configurable properties supported by
 this <code>Call</code> object.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#getReturnType()">getReturnType</a></strong>()</code>
<div class="block">Gets the return type for a specific operation.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#getTargetEndpointAddress()">getTargetEndpointAddress</a></strong>()</code>
<div class="block">Gets the address of a target service endpoint.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#invoke(java.lang.Object[])">invoke</a></strong>(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;inputParams)</code>
<div class="block">Invokes a specific operation using a synchronous request-response
 interaction mode.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#invoke(javax.xml.namespace.QName,%20java.lang.Object[])">invoke</a></strong>(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;operationName,
      <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;inputParams)</code>
<div class="block">Invokes a specific operation using a synchronous request-response
 interaction mode.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#invokeOneWay(java.lang.Object[])">invokeOneWay</a></strong>(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;params)</code>
<div class="block">Invokes a remote method using the one-way interaction mode.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#isParameterAndReturnSpecRequired(javax.xml.namespace.QName)">isParameterAndReturnSpecRequired</a></strong>(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;operationName)</code>
<div class="block">Indicates whether <code>addParameter</code> and
 <code>setReturnType</code> methods
 are to be invoked to specify the parameter and return type
 specification for a specific operation.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#removeAllParameters()">removeAllParameters</a></strong>()</code>
<div class="block">Removes all specified parameters from this <code>Call</code> instance.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#removeProperty(java.lang.String)">removeProperty</a></strong>(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Removes a named property.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#setOperationName(javax.xml.namespace.QName)">setOperationName</a></strong>(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;operationName)</code>
<div class="block">Sets the name of the operation to be invoked using this
 <code>Call</code> instance.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#setPortTypeName(javax.xml.namespace.QName)">setPortTypeName</a></strong>(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;portType)</code>
<div class="block">Sets the qualified name of the port type.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#setProperty(java.lang.String,%20java.lang.Object)">setProperty</a></strong>(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
           <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
<div class="block">Sets the value for a named property.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#setReturnType(javax.xml.namespace.QName)">setReturnType</a></strong>(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;xmlType)</code>
<div class="block">Sets the return type for a specific operation.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#setReturnType(javax.xml.namespace.QName,%20java.lang.Class)">setReturnType</a></strong>(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;xmlType,
             <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;javaType)</code>
<div class="block">Sets the return type for a specific operation.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../javax/xml/rpc/Call.html#setTargetEndpointAddress(java.lang.String)">setTargetEndpointAddress</a></strong>(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;address)</code>
<div class="block">Sets the address of the target service endpoint.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="USERNAME_PROPERTY">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>USERNAME_PROPERTY</h4>
<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> USERNAME_PROPERTY</pre>
<div class="block">Standard property: User name for authentication
 <p>Type: <code>java.lang.String</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../constant-values.html#javax.xml.rpc.Call.USERNAME_PROPERTY">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="PASSWORD_PROPERTY">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PASSWORD_PROPERTY</h4>
<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> PASSWORD_PROPERTY</pre>
<div class="block">Standard property: Password for authentication
 <p>Type: <code>java.lang.String</code></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../constant-values.html#javax.xml.rpc.Call.PASSWORD_PROPERTY">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="OPERATION_STYLE_PROPERTY">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>OPERATION_STYLE_PROPERTY</h4>
<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> OPERATION_STYLE_PROPERTY</pre>
<div class="block">Standard property for operation style. This property is
 set to "rpc" if the operation style is rpc; "document"
 if the operation style is document.
 <p>Type: <code>java.lang.String</code></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../constant-values.html#javax.xml.rpc.Call.OPERATION_STYLE_PROPERTY">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="SOAPACTION_USE_PROPERTY">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SOAPACTION_USE_PROPERTY</h4>
<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> SOAPACTION_USE_PROPERTY</pre>
<div class="block">Standard property for SOAPAction. This boolean property
 indicates whether or not SOAPAction is to be used. The
 default value of this property is false indicating that
 the SOAPAction is not used.
 <p>Type: <code>java.lang.Boolean</code></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../constant-values.html#javax.xml.rpc.Call.SOAPACTION_USE_PROPERTY">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="SOAPACTION_URI_PROPERTY">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SOAPACTION_URI_PROPERTY</h4>
<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> SOAPACTION_URI_PROPERTY</pre>
<div class="block">Standard property for SOAPAction. Indicates the SOAPAction
 URI if the <code>javax.xml.rpc.soap.http.soapaction.use</code>
 property is set to <code>true</code>.
 <p>Type: <code>java.lang.String</code></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../constant-values.html#javax.xml.rpc.Call.SOAPACTION_URI_PROPERTY">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="ENCODINGSTYLE_URI_PROPERTY">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ENCODINGSTYLE_URI_PROPERTY</h4>
<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> ENCODINGSTYLE_URI_PROPERTY</pre>
<div class="block">Standard property for encoding Style:  Encoding style specified
 as a namespace URI. The default value is the SOAP 1.1 encoding
 <code>http://schemas.xmlsoap.org/soap/encoding/</code>
 <p>Type: <code>java.lang.String</code></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../constant-values.html#javax.xml.rpc.Call.ENCODINGSTYLE_URI_PROPERTY">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="SESSION_MAINTAIN_PROPERTY">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SESSION_MAINTAIN_PROPERTY</h4>
<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> SESSION_MAINTAIN_PROPERTY</pre>
<div class="block">Standard property: This boolean property is used by a service
 client to indicate whether or not it wants to participate in
 a session with a service endpoint. If this property is set to
 true, the service client indicates that it wants the session
 to be maintained. If set to false, the session is not maintained.
 The default value for this property is <code>false</code>.
 <p>Type: <code>java.lang.Boolean</code></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../constant-values.html#javax.xml.rpc.Call.SESSION_MAINTAIN_PROPERTY">Constant Field Values</a></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="isParameterAndReturnSpecRequired(javax.xml.namespace.QName)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isParameterAndReturnSpecRequired</h4>
<pre>boolean&nbsp;isParameterAndReturnSpecRequired(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;operationName)</pre>
<div class="block">Indicates whether <code>addParameter</code> and
 <code>setReturnType</code> methods
 are to be invoked to specify the parameter and return type
 specification for a specific operation.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>operationName</code> - Qualified name of the operation</dd>
<dt><span class="strong">Returns:</span></dt><dd>Returns true if the Call implementation class
      requires addParameter and setReturnType to be
      invoked in the client code for the specified
      operation. This method returns false otherwise.</dd></dl>
</li>
</ul>
<a name="addParameter(java.lang.String, javax.xml.namespace.QName, javax.xml.rpc.ParameterMode)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addParameter</h4>
<pre>void&nbsp;addParameter(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;paramName,
                <a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;xmlType,
                <a href="../../../javax/xml/rpc/ParameterMode.html" title="class in javax.xml.rpc">ParameterMode</a>&nbsp;parameterMode)</pre>
<div class="block">Adds a parameter type and mode for a specific  operation.
 Note that the client code may not call any
 <code>addParameter</code> and <code>setReturnType</code>
 methods before calling the <code>invoke</code> method. In
 this case, the Call implementation class determines the
 parameter types by using reflection on parameters, using
 the WSDL description and configured type mapping registry.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>paramName</code> - Name of the parameter</dd><dd><code>xmlType</code> - XML datatype of the parameter</dd><dd><code>parameterMode</code> - Mode of the parameter-whether
                <code>ParameterMode.IN</code>,
                <code>ParameterMode.OUT</code>,
                or <code>ParameterMode.INOUT</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - This exception may
     be thrown if the method <code>isParameterAndReturnSpecRequired</code>
     returns <code>false</code> for this operation.</dd>
<dd><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - If any illegal
     parameter name or XML type is specified</dd></dl>
</li>
</ul>
<a name="addParameter(java.lang.String, javax.xml.namespace.QName, java.lang.Class, javax.xml.rpc.ParameterMode)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addParameter</h4>
<pre>void&nbsp;addParameter(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;paramName,
                <a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;xmlType,
                <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;javaType,
                <a href="../../../javax/xml/rpc/ParameterMode.html" title="class in javax.xml.rpc">ParameterMode</a>&nbsp;parameterMode)</pre>
<div class="block">Adds a parameter type and mode for a specific  operation.
 This method is used to specify the Java type for either
 OUT or INOUT parameters.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>paramName</code> - Name of the parameter</dd><dd><code>xmlType</code> - XML datatype of the parameter</dd><dd><code>javaType</code> - The Java class of the parameter</dd><dd><code>parameterMode</code> - Mode of the parameter-whether
                ParameterMode.IN, OUT or INOUT</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - <ul>

     <li>This exception may be thrown if this method is
     invoked when the method <code>isParameterAndReturnSpecRequired</code>
     returns <code>false</code>.
     <li>If specified XML type and Java type mapping
     is not valid. For example, <code>TypeMappingRegistry</code>
     has no serializers for this mapping.
     </ul></dd>
<dd><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - If any illegal
     parameter name or XML type is specified</dd>
<dd><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If this
     method is not supported</dd></dl>
</li>
</ul>
<a name="getParameterTypeByName(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameterTypeByName</h4>
<pre><a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;getParameterTypeByName(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;paramName)</pre>
<div class="block">Gets the XML type of a parameter by name.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>paramName</code> - name of the parameter</dd>
<dt><span class="strong">Returns:</span></dt><dd>Returns XML type for the specified parameter</dd></dl>
</li>
</ul>
<a name="setReturnType(javax.xml.namespace.QName)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setReturnType</h4>
<pre>void&nbsp;setReturnType(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;xmlType)</pre>
<div class="block">Sets the return type for a specific operation. Invoking
 <code>setReturnType(null)</code> removes the return
 type for this Call object.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>xmlType</code> - XML data type of the return value</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - This exception
     may be thrown when the method
     <code>isParameterAndReturnSpecRequired</code> returns
     <code>false</code>.</dd>
<dd><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - If an illegal
     XML type is specified</dd></dl>
</li>
</ul>
<a name="setReturnType(javax.xml.namespace.QName, java.lang.Class)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setReturnType</h4>
<pre>void&nbsp;setReturnType(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;xmlType,
                 <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;javaType)</pre>
<div class="block">Sets the return type for a specific operation.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>xmlType</code> - XML data type of the return value</dd><dd><code>javaType</code> - Java class of the return value</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - <ul>
     <li>This exception may be thrown if this method is
     invoked when the method <code>isParameterAndReturnSpecRequired</code>
     returns <code>false</code>.
     <li>If XML type and Java type cannot be mapped
     using the standard type mapping or TypeMapping
     registry
     </ul></dd>
<dd><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang">UnsupportedOperationException</a></code> - If this
     method is not supported</dd>
<dd><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - If an illegal
     XML type is specified</dd></dl>
</li>
</ul>
<a name="getReturnType()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getReturnType</h4>
<pre><a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;getReturnType()</pre>
<div class="block">Gets the return type for a specific operation.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the XML type for the return value</dd></dl>
</li>
</ul>
<a name="removeAllParameters()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeAllParameters</h4>
<pre>void&nbsp;removeAllParameters()</pre>
<div class="block">Removes all specified parameters from this <code>Call</code> instance.
 Note that this method removes only the parameters and not
 the return type. The <code>setReturnType(null)</code> is
 used to remove the return type.</div>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - This exception may be
     thrown If this method is called when the method
     <code>isParameterAndReturnSpecRequired</code>
     returns <code>false</code> for this Call's operation.</dd></dl>
</li>
</ul>
<a name="getOperationName()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperationName</h4>
<pre><a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;getOperationName()</pre>
<div class="block">Gets the name of the operation to be invoked using this Call instance.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Qualified name of the operation</dd></dl>
</li>
</ul>
<a name="setOperationName(javax.xml.namespace.QName)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setOperationName</h4>
<pre>void&nbsp;setOperationName(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;operationName)</pre>
<div class="block">Sets the name of the operation to be invoked using this
 <code>Call</code> instance.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>operationName</code> - QName of the operation to be
                   invoked using the Call instance</dd></dl>
</li>
</ul>
<a name="getPortTypeName()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPortTypeName</h4>
<pre><a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;getPortTypeName()</pre>
<div class="block">Gets the qualified name of the port type.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Qualified name of the port type</dd></dl>
</li>
</ul>
<a name="setPortTypeName(javax.xml.namespace.QName)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setPortTypeName</h4>
<pre>void&nbsp;setPortTypeName(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;portType)</pre>
<div class="block">Sets the qualified name of the port type.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>portType</code> - Qualified name of the port type</dd></dl>
</li>
</ul>
<a name="setTargetEndpointAddress(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setTargetEndpointAddress</h4>
<pre>void&nbsp;setTargetEndpointAddress(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;address)</pre>
<div class="block">Sets the address of the target service endpoint.
 This address must correspond to the transport specified
 in the binding for this <code>Call</code> instance.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>address</code> - Address of the target service endpoint;
             specified as an URI</dd></dl>
</li>
</ul>
<a name="getTargetEndpointAddress()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTargetEndpointAddress</h4>
<pre><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getTargetEndpointAddress()</pre>
<div class="block">Gets the address of a target service endpoint.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Endpoint address of the target service port as an URI</dd></dl>
</li>
</ul>
<a name="setProperty(java.lang.String, java.lang.Object)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setProperty</h4>
<pre>void&nbsp;setProperty(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
               <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
<div class="block">Sets the value for a named property. JAX-RPC specification
 specifies a standard set of properties that may be passed
 to the <code>Call.setProperty</code> method.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>name</code> - Name of the property</dd><dd><code>value</code> - Value of the property</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - <ul>
     <li>If an optional standard property name is
         specified, however this <code>Call</code> implementation
         class does not support the configuration of
         this property.
     <li>If an invalid (or unsupported) property name is
         specified or if a value of mismatched property
         type is passed.
     <li>If there is any error in the configuration of
         a valid property.
     </ul></dd></dl>
</li>
</ul>
<a name="getProperty(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getProperty</h4>
<pre><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;getProperty(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
<div class="block">Gets the value of a named property.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>name</code> - Name of the property</dd>
<dt><span class="strong">Returns:</span></dt><dd>Value of the named property</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - if an invalid or
     unsupported property name is passed.</dd></dl>
</li>
</ul>
<a name="removeProperty(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeProperty</h4>
<pre>void&nbsp;removeProperty(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
<div class="block">Removes a named property.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>name</code> - Name of the property</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - if an invalid or
     unsupported property name is passed.</dd></dl>
</li>
</ul>
<a name="getPropertyNames()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPropertyNames</h4>
<pre><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&nbsp;getPropertyNames()</pre>
<div class="block">Gets the names of configurable properties supported by
 this <code>Call</code> object.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Iterator for the property names</dd></dl>
</li>
</ul>
<a name="invoke(java.lang.Object[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invoke</h4>
<pre><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;invoke(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;inputParams)
              throws <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/rmi/RemoteException.html?is-external=true" title="class or interface in java.rmi">RemoteException</a></pre>
<div class="block">Invokes a specific operation using a synchronous request-response
 interaction mode.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>inputParams</code> - Object[]--Parameters for this invocation. This
     includes only the input params</dd>
<dt><span class="strong">Returns:</span></dt><dd>Returns the return value or <code>null</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/rmi/RemoteException.html?is-external=true" title="class or interface in java.rmi">RemoteException</a></code> - if there is any error in the remote
                                    method invocation or if the Call
                                    object is not configured properly.</dd>
<dd><code><a href="../../../javax/xml/rpc/soap/SOAPFaultException.html" title="class in javax.xml.rpc.soap">SOAPFaultException</a></code> - Indicates a SOAP fault</dd>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - <ul>

     <li>If there is an error in the configuration of the
         <code>Call</code> object
     <li>If <code>inputParams</code> do not match the required parameter
         set (as specified through the <code>addParameter</code>
         invocations or in the corresponding WSDL)
     <li>If parameters and return type are incorrectly
         specified
     </ul></dd></dl>
</li>
</ul>
<a name="invoke(javax.xml.namespace.QName, java.lang.Object[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invoke</h4>
<pre><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;invoke(<a href="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</a>&nbsp;operationName,
            <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;inputParams)
              throws <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/rmi/RemoteException.html?is-external=true" title="class or interface in java.rmi">RemoteException</a></pre>
<div class="block">Invokes a specific operation using a synchronous request-response
 interaction mode.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>operationName</code> - QName of the operation</dd><dd><code>inputParams</code> - Object[]--Parameters for this invocation. This
     includes only the input params.</dd>
<dt><span class="strong">Returns:</span></dt><dd>Return value or null</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/rmi/RemoteException.html?is-external=true" title="class or interface in java.rmi">RemoteException</a></code> - if there is any error in the
     remote method invocation.</dd>
<dd><code><a href="../../../javax/xml/rpc/soap/SOAPFaultException.html" title="class in javax.xml.rpc.soap">SOAPFaultException</a></code> - Indicates a SOAP fault</dd>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - <ul>
     <li>If there is an error in the configuration of the
         <code>Cal</code>l object
     <li>If <code>inputParam</code>s do not match the required parameter
         set (as specified through the <code>addParameter</code>
         invocations or in the corresponding WSDL)
     <li>If parameters and return type are incorrectly
         specified
     </ul></dd></dl>
</li>
</ul>
<a name="invokeOneWay(java.lang.Object[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invokeOneWay</h4>
<pre>void&nbsp;invokeOneWay(<a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;params)</pre>
<div class="block">Invokes a remote method using the one-way interaction mode. The
 client thread does not block waiting for the completion of the
 server processing for this remote method invocation. This method
 must not throw any remote exceptions. This method may throw a
 <code>JAXRPCException</code> during the processing of the one-way
 remote call.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>params</code> - Object[]--Parameters for this invocation. This
     includes only the input params.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - if there is an error in the
     configuration of the <code>Call</code> object (example: a
     non-void return type has been incorrectly specified for the
     one-way call) or if there is any error during the
     invocation of the one-way remote call</dd></dl>
</li>
</ul>
<a name="getOutputParams()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOutputParams</h4>
<pre><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;getOutputParams()</pre>
<div class="block">Returns a <code>Map</code> of {name, value} for the output parameters of
 the last invoked operation. The parameter names in the
 returned Map are of type <code>java.lang.String</code>.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Map Output parameters for the last <code>Call.invoke()</code>.
         Empty <code>Map</code> is returned if there are no output
         parameters.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - If this method is invoked for a
     one-way operation or is invoked before any
     <code>invoke</code> method has been called.</dd></dl>
</li>
</ul>
<a name="getOutputValues()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getOutputValues</h4>
<pre><a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;getOutputValues()</pre>
<div class="block">Returns a <code>List</code> values for the output parameters
 of the last invoked operation.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>java.util.List Values for the output parameters. An
         empty <code>List</code> is returned if there are
         no output values.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</a></code> - If this method is invoked for a
     one-way operation or is invoked before any
     <code>invoke</code> method has been called.</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><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/Call.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>Prev Class</li>
<li><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/xml/rpc/Call.html" target="_top">Frames</a></li>
<li><a href="Call.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><a href="#field_summary">Field</a>&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><a href="#field_detail">Field</a>&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 © <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</small></p>
</body>
</html>