<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>Call</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="Call";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc"><span class="typeNameLink">Next&nbsp;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&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><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">
<hr>
<br>
<pre>public interface <span class="typeNameLabel">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.</p></div>
</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="memberSummary" 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 java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#ENCODINGSTYLE_URI_PROPERTY">ENCODINGSTYLE_URI_PROPERTY</a></span></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 java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#OPERATION_STYLE_PROPERTY">OPERATION_STYLE_PROPERTY</a></span></code>
<div class="block">Standard property for operation style.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#PASSWORD_PROPERTY">PASSWORD_PROPERTY</a></span></code>
<div class="block">Standard property: Password for authentication</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#SESSION_MAINTAIN_PROPERTY">SESSION_MAINTAIN_PROPERTY</a></span></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 java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#SOAPACTION_URI_PROPERTY">SOAPACTION_URI_PROPERTY</a></span></code>
<div class="block">Standard property for SOAPAction.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#SOAPACTION_USE_PROPERTY">SOAPACTION_USE_PROPERTY</a></span></code>
<div class="block">Standard property for SOAPAction.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#USERNAME_PROPERTY">USERNAME_PROPERTY</a></span></code>
<div class="block">Standard property: User name for authentication</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="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#addParameter-java.lang.String-javax.xml.namespace.QName-java.lang.Class-javax.xml.rpc.ParameterMode-">addParameter</a></span>(java.lang.String&nbsp;paramName,
            javax.xml.namespace.QName&nbsp;xmlType,
            java.lang.Class&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 id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#addParameter-java.lang.String-javax.xml.namespace.QName-javax.xml.rpc.ParameterMode-">addParameter</a></span>(java.lang.String&nbsp;paramName,
            javax.xml.namespace.QName&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 id="i2" class="altColor">
<td class="colFirst"><code>javax.xml.namespace.QName</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#getOperationName--">getOperationName</a></span>()</code>
<div class="block">Gets the name of the operation to be invoked using this
  <code>Call</code> instance.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.util.Map</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#getOutputParams--">getOutputParams</a></span>()</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 id="i4" class="altColor">
<td class="colFirst"><code>java.util.List</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#getOutputValues--">getOutputValues</a></span>()</code>
<div class="block">Returns a <code>List</code> values for the output parameters 
  of the last invoked operation.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>javax.xml.namespace.QName</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#getParameterTypeByName-java.lang.String-">getParameterTypeByName</a></span>(java.lang.String&nbsp;paramName)</code>
<div class="block">Gets the XML type of a parameter by name</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>javax.xml.namespace.QName</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#getPortTypeName--">getPortTypeName</a></span>()</code>
<div class="block">Gets the qualified name of the port type.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#getProperty-java.lang.String-">getProperty</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Gets the value of a named property.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>java.util.Iterator</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#getPropertyNames--">getPropertyNames</a></span>()</code>
<div class="block">Gets the names of configurable properties supported by 
  this <code>Call</code> object.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>javax.xml.namespace.QName</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#getReturnType--">getReturnType</a></span>()</code>
<div class="block">Gets the return type for a specific operation</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#getTargetEndpointAddress--">getTargetEndpointAddress</a></span>()</code>
<div class="block">Gets the address of a target service endpoint.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#invoke-java.lang.Object:A-">invoke</a></span>(java.lang.Object[]&nbsp;inputParams)</code>
<div class="block">Invokes a specific operation using a synchronous request-response 
  interaction mode.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#invoke-javax.xml.namespace.QName-java.lang.Object:A-">invoke</a></span>(javax.xml.namespace.QName&nbsp;operationName,
      java.lang.Object[]&nbsp;inputParams)</code>
<div class="block">Invokes a specific operation using a synchronous request-response 
  interaction mode.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#invokeOneWay-java.lang.Object:A-">invokeOneWay</a></span>(java.lang.Object[]&nbsp;inputParams)</code>
<div class="block">Invokes a remote method using the one-way interaction mode.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#isParameterAndReturnSpecRequired-javax.xml.namespace.QName-">isParameterAndReturnSpecRequired</a></span>(javax.xml.namespace.QName&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 id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#removeAllParameters--">removeAllParameters</a></span>()</code>
<div class="block">Removes all specified parameters from this <code>Call</code> instance.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#removeProperty-java.lang.String-">removeProperty</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Removes a named property.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#setOperationName-javax.xml.namespace.QName-">setOperationName</a></span>(javax.xml.namespace.QName&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 id="i18" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#setPortTypeName-javax.xml.namespace.QName-">setPortTypeName</a></span>(javax.xml.namespace.QName&nbsp;portType)</code>
<div class="block">Sets the qualified name of the port type.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#setProperty-java.lang.String-java.lang.Object-">setProperty</a></span>(java.lang.String&nbsp;name,
           java.lang.Object&nbsp;value)</code>
<div class="block">Sets the value for a named property.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#setReturnType-javax.xml.namespace.QName-">setReturnType</a></span>(javax.xml.namespace.QName&nbsp;xmlType)</code>
<div class="block">Sets the return type for a specific operation.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#setReturnType-javax.xml.namespace.QName-java.lang.Class-">setReturnType</a></span>(javax.xml.namespace.QName&nbsp;xmlType,
             java.lang.Class&nbsp;javaType)</code>
<div class="block">Sets the return type for a specific operation.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/rpc/Call.html#setTargetEndpointAddress-java.lang.String-">setTargetEndpointAddress</a></span>(java.lang.String&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;java.lang.String USERNAME_PROPERTY</pre>
<div class="block">Standard property: User name for authentication
  <p>Type: <code>java.lang.String</code></div>
<dl>
<dt><span class="seeLabel">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;java.lang.String PASSWORD_PROPERTY</pre>
<div class="block">Standard property: Password for authentication
  <p>Type: <code>java.lang.String</code></div>
<dl>
<dt><span class="seeLabel">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;java.lang.String 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="seeLabel">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;java.lang.String 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="seeLabel">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;java.lang.String 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="seeLabel">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;java.lang.String 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="seeLabel">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;java.lang.String 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="seeLabel">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(javax.xml.namespace.QName&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="paramLabel">Parameters:</span></dt>
<dd><code>operationName</code> - Qualified name of the operation</dd>
<dt><span class="returnLabel">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>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If invalid
           operation name is specified</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(java.lang.String&nbsp;paramName,
                  javax.xml.namespace.QName&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="paramLabel">Parameters:</span></dt>
<dd><code>paramName</code> - Name of the parameter</dd>
<dd><code>xmlType</code> - XML type 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</code>,</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.xml.rpc.JAXRPCException:</code> - This exception may
          be thrown if the method <code>isParameterAndReturnSpecRequired</code>
          returns <code>false</code> for this operation.</dd>
<dd><code>java.lang.IllegalArgumentException</code> - If any illegal
          parameter name or XML type is specified</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/rpc/Call.html#isParameterAndReturnSpecRequired-javax.xml.namespace.QName-"><code>isParameterAndReturnSpecRequired(javax.xml.namespace.QName)</code></a></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(java.lang.String&nbsp;paramName,
                  javax.xml.namespace.QName&nbsp;xmlType,
                  java.lang.Class&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="paramLabel">Parameters:</span></dt>
<dd><code>paramName</code> - Name of the parameter</dd>
<dd><code>xmlType</code> - XML type of the parameter</dd>
<dd><code>javaType</code> - Java class of the parameter</dd>
<dd><code>parameterMode</code> - Mode of the parameter-whether
                     ParameterMode.IN, OUT or INOUT</dd>
<dt><span class="throwsLabel">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>java.lang.IllegalArgumentException</code> - If any illegal
          parameter name or XML type is specified</dd>
<dd><code>java.lang.UnsupportedOperationException</code> - If this
          method is not supported</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/rpc/Call.html#isParameterAndReturnSpecRequired-javax.xml.namespace.QName-"><code>isParameterAndReturnSpecRequired(javax.xml.namespace.QName)</code></a></dd>
</dl>
</li>
</ul>
<a name="getParameterTypeByName-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameterTypeByName</h4>
<pre>javax.xml.namespace.QName&nbsp;getParameterTypeByName(java.lang.String&nbsp;paramName)</pre>
<div class="block">Gets the XML type of a parameter by name</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>paramName</code> - Name of the parameter</dd>
<dt><span class="returnLabel">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(javax.xml.namespace.QName&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="paramLabel">Parameters:</span></dt>
<dd><code>xmlType</code> - XML data type of the return value</dd>
<dt><span class="throwsLabel">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>java.lang.IllegalArgumentException</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(javax.xml.namespace.QName&nbsp;xmlType,
                   java.lang.Class&nbsp;javaType)</pre>
<div class="block">Sets the return type for a specific operation.</div>
<dl>
<dt><span class="paramLabel">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="throwsLabel">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>java.lang.UnsupportedOperationException</code> - If this
          method is not supported</dd>
<dd><code>java.lang.IllegalArgumentException</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>javax.xml.namespace.QName&nbsp;getReturnType()</pre>
<div class="block">Gets the return type for a specific operation</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Returns 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="throwsLabel">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>javax.xml.namespace.QName&nbsp;getOperationName()</pre>
<div class="block">Gets the name of the operation to be invoked using this
  <code>Call</code> instance.</div>
<dl>
<dt><span class="returnLabel">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(javax.xml.namespace.QName&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="paramLabel">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>javax.xml.namespace.QName&nbsp;getPortTypeName()</pre>
<div class="block">Gets the qualified name of the port type.</div>
<dl>
<dt><span class="returnLabel">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(javax.xml.namespace.QName&nbsp;portType)</pre>
<div class="block">Sets the qualified name of the port type.</div>
<dl>
<dt><span class="paramLabel">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(java.lang.String&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="paramLabel">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>java.lang.String&nbsp;getTargetEndpointAddress()</pre>
<div class="block">Gets the address of a target service endpoint.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Address of the target service endpoint 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(java.lang.String&nbsp;name,
                 java.lang.Object&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="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name of the property</dd>
<dd><code>value</code> - Value of the property</dd>
<dt><span class="throwsLabel">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>java.lang.Object&nbsp;getProperty(java.lang.String&nbsp;name)</pre>
<div class="block">Gets the value of a named property.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name of the property</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Value of the named property</dd>
<dt><span class="throwsLabel">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(java.lang.String&nbsp;name)</pre>
<div class="block">Removes a named property.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name of the property</dd>
<dt><span class="throwsLabel">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>java.util.Iterator&nbsp;getPropertyNames()</pre>
<div class="block">Gets the names of configurable properties supported by 
  this <code>Call</code> object.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Iterator for the property names</dd>
</dl>
</li>
</ul>
<a name="invoke-java.lang.Object:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invoke</h4>
<pre>java.lang.Object&nbsp;invoke(java.lang.Object[]&nbsp;inputParams)
                 throws java.rmi.RemoteException</pre>
<div class="block">Invokes a specific operation using a synchronous request-response 
  interaction mode.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>inputParams</code> - Object[]--Parameters for this invocation. This
          includes only the input params</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Returns the return value or <code>null</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.rmi.RemoteException</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>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-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invoke</h4>
<pre>java.lang.Object&nbsp;invoke(javax.xml.namespace.QName&nbsp;operationName,
                        java.lang.Object[]&nbsp;inputParams)
                 throws java.rmi.RemoteException</pre>
<div class="block">Invokes a specific operation using a synchronous request-response 
  interaction mode.</div>
<dl>
<dt><span class="paramLabel">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="returnLabel">Returns:</span></dt>
<dd>Return value or null</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.rmi.RemoteException</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-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invokeOneWay</h4>
<pre>void&nbsp;invokeOneWay(java.lang.Object[]&nbsp;inputParams)</pre>
<div class="block">Invokes a remote method using the one-way interaction mode. The 
  client thread does not normally  block waiting for the completion
  of the server processing for this remote method invocation. When
  the protocol in use is SOAP/HTTP, this method should block until
  an HTTP response code has been received or an error occurs.

 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="paramLabel">Parameters:</span></dt>
<dd><code>inputParams</code> - Object[]--Parameters for this invocation. This
          includes only the input params.</dd>
<dt><span class="throwsLabel">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>java.util.Map&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="returnLabel">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="throwsLabel">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>java.util.List&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="returnLabel">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="throwsLabel">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>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc"><span class="typeNameLink">Next&nbsp;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&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><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 ======= -->
</body>
</html>
