<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.4.2_08) on Sat Apr 22 18:56:42 PDT 2006 -->
<TITLE>
Call (Axis API)
</TITLE>

<META NAME="keywords" CONTENT="javax.xml.rpc.Call interface">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="Call (Axis API)";
}
</SCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/Call.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../javax/xml/rpc/Service.html" title="interface in javax.xml.rpc"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="Call.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
javax.xml.rpc</FONT>
<BR>
Interface Call</H2>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../org/apache/axis/client/Call.html" title="class in org.apache.axis.client">Call</A></DD>
</DL>
<HR>
<DL>
<DT>public interface <B>Call</B></DL>

<P>
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>

<P>
<DL>
<DT><B>Version:</B></DT>
  <DD>1.0</DD>
</DL>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Field Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#ENCODINGSTYLE_URI_PROPERTY">ENCODINGSTYLE_URI_PROPERTY</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Standard property for encoding Style:  Encoding style specified
 as a namespace URI.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#OPERATION_STYLE_PROPERTY">OPERATION_STYLE_PROPERTY</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Standard property for operation style.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#PASSWORD_PROPERTY">PASSWORD_PROPERTY</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Standard property: Password for authentication
 </TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#SESSION_MAINTAIN_PROPERTY">SESSION_MAINTAIN_PROPERTY</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#SOAPACTION_URI_PROPERTY">SOAPACTION_URI_PROPERTY</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Standard property for SOAPAction.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#SOAPACTION_USE_PROPERTY">SOAPACTION_USE_PROPERTY</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Standard property for SOAPAction.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#USERNAME_PROPERTY">USERNAME_PROPERTY</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Standard property: User name for authentication
 </TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->


<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#addParameter(java.lang.String, javax.xml.namespace.QName, java.lang.Class, javax.xml.rpc.ParameterMode)">addParameter</A></B>(java.lang.String&nbsp;paramName,
             <A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&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>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a parameter type and mode for a specific  operation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#addParameter(java.lang.String, javax.xml.namespace.QName, javax.xml.rpc.ParameterMode)">addParameter</A></B>(java.lang.String&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>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a parameter type and mode for a specific  operation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#getOperationName()">getOperationName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the name of the operation to be invoked using this Call instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Map</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#getOutputParams()">getOutputParams</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <code>Map</code> of {name, value} for the output parameters of
 the last invoked operation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.List</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#getOutputValues()">getOutputValues</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <code>List</code> values for the output parameters
 of the last invoked operation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#getParameterTypeByName(java.lang.String)">getParameterTypeByName</A></B>(java.lang.String&nbsp;paramName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the XML type of a parameter by name.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#getPortTypeName()">getPortTypeName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the qualified name of the port type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#getProperty(java.lang.String)">getProperty</A></B>(java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the value of a named property.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Iterator</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#getPropertyNames()">getPropertyNames</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the names of configurable properties supported by
 this <code>Call</code> object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#getReturnType()">getReturnType</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the return type for a specific operation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#getTargetEndpointAddress()">getTargetEndpointAddress</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the address of a target service endpoint.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#invoke(java.lang.Object[])">invoke</A></B>(java.lang.Object[]&nbsp;inputParams)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invokes a specific operation using a synchronous request-response
 interaction mode.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.Object</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#invoke(javax.xml.namespace.QName, java.lang.Object[])">invoke</A></B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;operationName,
       java.lang.Object[]&nbsp;inputParams)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invokes a specific operation using a synchronous request-response
 interaction mode.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#invokeOneWay(java.lang.Object[])">invokeOneWay</A></B>(java.lang.Object[]&nbsp;params)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invokes a remote method using the one-way interaction mode.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#isParameterAndReturnSpecRequired(javax.xml.namespace.QName)">isParameterAndReturnSpecRequired</A></B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;operationName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#removeAllParameters()">removeAllParameters</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes all specified parameters from this <code>Call</code> instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#removeProperty(java.lang.String)">removeProperty</A></B>(java.lang.String&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes a named property.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#setOperationName(javax.xml.namespace.QName)">setOperationName</A></B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;operationName)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the name of the operation to be invoked using this
 <code>Call</code> instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#setPortTypeName(javax.xml.namespace.QName)">setPortTypeName</A></B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;portType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the qualified name of the port type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#setProperty(java.lang.String, java.lang.Object)">setProperty</A></B>(java.lang.String&nbsp;name,
            java.lang.Object&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the value for a named property.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#setReturnType(javax.xml.namespace.QName)">setReturnType</A></B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;xmlType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the return type for a specific operation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#setReturnType(javax.xml.namespace.QName, java.lang.Class)">setReturnType</A></B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;xmlType,
              java.lang.Class&nbsp;javaType)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the return type for a specific operation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../javax/xml/rpc/Call.html#setTargetEndpointAddress(java.lang.String)">setTargetEndpointAddress</A></B>(java.lang.String&nbsp;address)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the address of the target service endpoint.</TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->

<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Field Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="USERNAME_PROPERTY"><!-- --></A><H3>
USERNAME_PROPERTY</H3>
<PRE>
public static final java.lang.String <B>USERNAME_PROPERTY</B></PRE>
<DL>
<DD>Standard property: User name for authentication
 <p>Type: <code>java.lang.String
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#javax.xml.rpc.Call.USERNAME_PROPERTY">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="PASSWORD_PROPERTY"><!-- --></A><H3>
PASSWORD_PROPERTY</H3>
<PRE>
public static final java.lang.String <B>PASSWORD_PROPERTY</B></PRE>
<DL>
<DD>Standard property: Password for authentication
 <p>Type: <code>java.lang.String</code>
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#javax.xml.rpc.Call.PASSWORD_PROPERTY">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="OPERATION_STYLE_PROPERTY"><!-- --></A><H3>
OPERATION_STYLE_PROPERTY</H3>
<PRE>
public static final java.lang.String <B>OPERATION_STYLE_PROPERTY</B></PRE>
<DL>
<DD>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>
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#javax.xml.rpc.Call.OPERATION_STYLE_PROPERTY">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="SOAPACTION_USE_PROPERTY"><!-- --></A><H3>
SOAPACTION_USE_PROPERTY</H3>
<PRE>
public static final java.lang.String <B>SOAPACTION_USE_PROPERTY</B></PRE>
<DL>
<DD>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>
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#javax.xml.rpc.Call.SOAPACTION_USE_PROPERTY">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="SOAPACTION_URI_PROPERTY"><!-- --></A><H3>
SOAPACTION_URI_PROPERTY</H3>
<PRE>
public static final java.lang.String <B>SOAPACTION_URI_PROPERTY</B></PRE>
<DL>
<DD>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>
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#javax.xml.rpc.Call.SOAPACTION_URI_PROPERTY">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="ENCODINGSTYLE_URI_PROPERTY"><!-- --></A><H3>
ENCODINGSTYLE_URI_PROPERTY</H3>
<PRE>
public static final java.lang.String <B>ENCODINGSTYLE_URI_PROPERTY</B></PRE>
<DL>
<DD>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>
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#javax.xml.rpc.Call.ENCODINGSTYLE_URI_PROPERTY">Constant Field Values</A></DL>
</DL>
<HR>

<A NAME="SESSION_MAINTAIN_PROPERTY"><!-- --></A><H3>
SESSION_MAINTAIN_PROPERTY</H3>
<PRE>
public static final java.lang.String <B>SESSION_MAINTAIN_PROPERTY</B></PRE>
<DL>
<DD>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>
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#javax.xml.rpc.Call.SESSION_MAINTAIN_PROPERTY">Constant Field Values</A></DL>
</DL>

<!-- ========= CONSTRUCTOR DETAIL ======== -->


<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Method Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="isParameterAndReturnSpecRequired(javax.xml.namespace.QName)"><!-- --></A><H3>
isParameterAndReturnSpecRequired</H3>
<PRE>
public boolean <B>isParameterAndReturnSpecRequired</B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;operationName)</PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>operationName</CODE> - Qualified name of the operation
<DT><B>Returns:</B><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.</DL>
</DD>
</DL>
<HR>

<A NAME="addParameter(java.lang.String, javax.xml.namespace.QName, javax.xml.rpc.ParameterMode)"><!-- --></A><H3>
addParameter</H3>
<PRE>
public void <B>addParameter</B>(java.lang.String&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>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>paramName</CODE> - Name of the parameter<DD><CODE>xmlType</CODE> - XML datatype of the parameter<DD><CODE>parameterMode</CODE> - Mode of the parameter-whether
                <code>ParameterMode.IN</code>,
                <code>ParameterMode.OUT</code>,
                or <code>ParameterMode.INOUT
<DT><B>Throws:</B>
<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><CODE>java.lang.IllegalArgumentException</CODE> - If any illegal
     parameter name or XML type is specified</DL>
</DD>
</DL>
<HR>

<A NAME="addParameter(java.lang.String, javax.xml.namespace.QName, java.lang.Class, javax.xml.rpc.ParameterMode)"><!-- --></A><H3>
addParameter</H3>
<PRE>
public void <B>addParameter</B>(java.lang.String&nbsp;paramName,
                         <A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&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>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>paramName</CODE> - Name of the parameter<DD><CODE>xmlType</CODE> - XML datatype of the parameter<DD><CODE>javaType</CODE> - The Java class of the parameter<DD><CODE>parameterMode</CODE> - Mode of the parameter-whether
                ParameterMode.IN, OUT or INOUT
<DT><B>Throws:</B>
<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><CODE>java.lang.IllegalArgumentException</CODE> - If any illegal
     parameter name or XML type is specified
<DD><CODE>java.lang.UnsupportedOperationException</CODE> - If this
     method is not supported</DL>
</DD>
</DL>
<HR>

<A NAME="getParameterTypeByName(java.lang.String)"><!-- --></A><H3>
getParameterTypeByName</H3>
<PRE>
public <A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getParameterTypeByName</B>(java.lang.String&nbsp;paramName)</PRE>
<DL>
<DD>Gets the XML type of a parameter by name.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>paramName</CODE> - name of the parameter
<DT><B>Returns:</B><DD>Returns XML type for the specified parameter</DL>
</DD>
</DL>
<HR>

<A NAME="setReturnType(javax.xml.namespace.QName)"><!-- --></A><H3>
setReturnType</H3>
<PRE>
public void <B>setReturnType</B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;xmlType)</PRE>
<DL>
<DD>Sets the return type for a specific operation. Invoking
 <code>setReturnType(null)</code> removes the return
 type for this Call object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>xmlType</CODE> - XML data type of the return value
<DT><B>Throws:</B>
<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><CODE>java.lang.IllegalArgumentException</CODE> - If an illegal
     XML type is specified</DL>
</DD>
</DL>
<HR>

<A NAME="setReturnType(javax.xml.namespace.QName, java.lang.Class)"><!-- --></A><H3>
setReturnType</H3>
<PRE>
public void <B>setReturnType</B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;xmlType,
                          java.lang.Class&nbsp;javaType)</PRE>
<DL>
<DD>Sets the return type for a specific operation.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>xmlType</CODE> - XML data type of the return value<DD><CODE>javaType</CODE> - Java class of the return value
<DT><B>Throws:</B>
<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><CODE>java.lang.UnsupportedOperationException</CODE> - If this
     method is not supported
<DD><CODE>java.lang.IllegalArgumentException</CODE> - If an illegal
     XML type is specified</DL>
</DD>
</DL>
<HR>

<A NAME="getReturnType()"><!-- --></A><H3>
getReturnType</H3>
<PRE>
public <A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getReturnType</B>()</PRE>
<DL>
<DD>Gets the return type for a specific operation.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the XML type for the return value</DL>
</DD>
</DL>
<HR>

<A NAME="removeAllParameters()"><!-- --></A><H3>
removeAllParameters</H3>
<PRE>
public void <B>removeAllParameters</B>()</PRE>
<DL>
<DD>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.
<P>
<DD><DL>

<DT><B>Throws:</B>
<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.</DL>
</DD>
</DL>
<HR>

<A NAME="getOperationName()"><!-- --></A><H3>
getOperationName</H3>
<PRE>
public <A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getOperationName</B>()</PRE>
<DL>
<DD>Gets the name of the operation to be invoked using this Call instance.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>Qualified name of the operation</DL>
</DD>
</DL>
<HR>

<A NAME="setOperationName(javax.xml.namespace.QName)"><!-- --></A><H3>
setOperationName</H3>
<PRE>
public void <B>setOperationName</B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;operationName)</PRE>
<DL>
<DD>Sets the name of the operation to be invoked using this
 <code>Call</code> instance.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>operationName</CODE> - QName of the operation to be
                   invoked using the Call instance</DL>
</DD>
</DL>
<HR>

<A NAME="getPortTypeName()"><!-- --></A><H3>
getPortTypeName</H3>
<PRE>
public <A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A> <B>getPortTypeName</B>()</PRE>
<DL>
<DD>Gets the qualified name of the port type.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>Qualified name of the port type</DL>
</DD>
</DL>
<HR>

<A NAME="setPortTypeName(javax.xml.namespace.QName)"><!-- --></A><H3>
setPortTypeName</H3>
<PRE>
public void <B>setPortTypeName</B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;portType)</PRE>
<DL>
<DD>Sets the qualified name of the port type.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>portType</CODE> - Qualified name of the port type</DL>
</DD>
</DL>
<HR>

<A NAME="setTargetEndpointAddress(java.lang.String)"><!-- --></A><H3>
setTargetEndpointAddress</H3>
<PRE>
public void <B>setTargetEndpointAddress</B>(java.lang.String&nbsp;address)</PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>address</CODE> - Address of the target service endpoint;
             specified as an URI</DL>
</DD>
</DL>
<HR>

<A NAME="getTargetEndpointAddress()"><!-- --></A><H3>
getTargetEndpointAddress</H3>
<PRE>
public java.lang.String <B>getTargetEndpointAddress</B>()</PRE>
<DL>
<DD>Gets the address of a target service endpoint.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>Endpoint address of the target service port as an URI</DL>
</DD>
</DL>
<HR>

<A NAME="setProperty(java.lang.String, java.lang.Object)"><!-- --></A><H3>
setProperty</H3>
<PRE>
public void <B>setProperty</B>(java.lang.String&nbsp;name,
                        java.lang.Object&nbsp;value)</PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - Name of the property<DD><CODE>value</CODE> - Value of the property
<DT><B>Throws:</B>
<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></DL>
</DD>
</DL>
<HR>

<A NAME="getProperty(java.lang.String)"><!-- --></A><H3>
getProperty</H3>
<PRE>
public java.lang.Object <B>getProperty</B>(java.lang.String&nbsp;name)</PRE>
<DL>
<DD>Gets the value of a named property.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - Name of the property
<DT><B>Returns:</B><DD>Value of the named property
<DT><B>Throws:</B>
<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.</DL>
</DD>
</DL>
<HR>

<A NAME="removeProperty(java.lang.String)"><!-- --></A><H3>
removeProperty</H3>
<PRE>
public void <B>removeProperty</B>(java.lang.String&nbsp;name)</PRE>
<DL>
<DD>Removes a named property.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - Name of the property
<DT><B>Throws:</B>
<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.</DL>
</DD>
</DL>
<HR>

<A NAME="getPropertyNames()"><!-- --></A><H3>
getPropertyNames</H3>
<PRE>
public java.util.Iterator <B>getPropertyNames</B>()</PRE>
<DL>
<DD>Gets the names of configurable properties supported by
 this <code>Call</code> object.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>Iterator for the property names</DL>
</DD>
</DL>
<HR>

<A NAME="invoke(java.lang.Object[])"><!-- --></A><H3>
invoke</H3>
<PRE>
public java.lang.Object <B>invoke</B>(java.lang.Object[]&nbsp;inputParams)
                        throws java.rmi.RemoteException</PRE>
<DL>
<DD>Invokes a specific operation using a synchronous request-response
 interaction mode.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>inputParams</CODE> - Object[]--Parameters for this invocation. This
     includes only the input params
<DT><B>Returns:</B><DD>Returns the return value or <code>null</code>
<DT><B>Throws:</B>
<DD><CODE>java.rmi.RemoteException</CODE> - if there is any error in the remote
                                    method invocation or if the Call
                                    object is not configured properly.
<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><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></DL>
</DD>
</DL>
<HR>

<A NAME="invoke(javax.xml.namespace.QName, java.lang.Object[])"><!-- --></A><H3>
invoke</H3>
<PRE>
public java.lang.Object <B>invoke</B>(<A HREF="../../../javax/xml/namespace/QName.html" title="class in javax.xml.namespace">QName</A>&nbsp;operationName,
                               java.lang.Object[]&nbsp;inputParams)
                        throws java.rmi.RemoteException</PRE>
<DL>
<DD>Invokes a specific operation using a synchronous request-response
 interaction mode.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>operationName</CODE> - QName of the operation<DD><CODE>inputParams</CODE> - Object[]--Parameters for this invocation. This
     includes only the input params.
<DT><B>Returns:</B><DD>Return value or null
<DT><B>Throws:</B>
<DD><CODE>java.rmi.RemoteException</CODE> - if there is any error in the
     remote method invocation.
<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><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></DL>
</DD>
</DL>
<HR>

<A NAME="invokeOneWay(java.lang.Object[])"><!-- --></A><H3>
invokeOneWay</H3>
<PRE>
public void <B>invokeOneWay</B>(java.lang.Object[]&nbsp;params)</PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>params</CODE> - Object[]--Parameters for this invocation. This
     includes only the input params.
<DT><B>Throws:</B>
<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</DL>
</DD>
</DL>
<HR>

<A NAME="getOutputParams()"><!-- --></A><H3>
getOutputParams</H3>
<PRE>
public java.util.Map <B>getOutputParams</B>()</PRE>
<DL>
<DD>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>.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>Map Output parameters for the last <code>Call.invoke()</code>.
         Empty <code>Map</code> is returned if there are no output
         parameters.
<DT><B>Throws:</B>
<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.</DL>
</DD>
</DL>
<HR>

<A NAME="getOutputValues()"><!-- --></A><H3>
getOutputValues</H3>
<PRE>
public java.util.List <B>getOutputValues</B>()</PRE>
<DL>
<DD>Returns a <code>List</code> values for the output parameters
 of the last invoked operation.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>java.util.List Values for the output parameters. An
         empty <code>List</code> is returned if there are
         no output values.
<DT><B>Throws:</B>
<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.</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/Call.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../javax/xml/rpc/Service.html" title="interface in javax.xml.rpc"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="Call.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright © 2005 Apache Web Services Project. All Rights Reserved.
</BODY>
</HTML>
