You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by Vijay Shinde <Vi...@morganstanley.com> on 2003/01/02 17:54:01 UTC

SOAP - method return

Hi,

I am doing LDAP call using soap .I want to return Hashtable from my
method call.
On my client site I am using following code to get my hashtable.

Response resp = call.invoke(url, "");
Parameter p = resp.getReturnValue();
  Hashtable values = (Hashtable)p.getValue();

I am getting following exception.

The SOAP Server says:
http://localhost:8080/soap/servlet/rpcrouterException in t
hread "main" java.lang.NullPointerException
 at LDAP_client.main(LDAP_client.java:36)

any help will be useful.

Vijay
--
This communication is intended for the addressee(s) and may contain
confidential and legally privileged information.  We do not waive
confidentiality or privilege by mistransmission.  If you have received
this communication in error, any use, dissemination, printing or copying
is strictly prohibited; please destroy all electronic and paper copies
and notify the sender immediately.



Re: SOAP - method return

Posted by Vijay Shinde <Vi...@morganstanley.com>.
Scott,

Thanx for your help.
I solved my problem by making some changes in my method.
Now i am creating a dummy Hashtable and populating them with the result of
the Enumaration so i can just get a plain Hashtable in my method return
type.
In future i may need to return a java object.Thanx a lot for your  timly
help.

Thanx & Regards,
Vijay


Scott Nichol wrote:

> No.  Vector$1 is not a Vector, it is a class that implements
> Enumeration.
>
> Scott Nichol
>
> ----- Original Message -----
> From: "Vijay Shinde" <Vi...@morganstanley.com>
> To: <so...@xml.apache.org>
> Sent: Thursday, January 02, 2003 1:41 PM
> Subject: Re: SOAP - method return
>
> > Thanx Scott,
> > can u se this class org.apache.soap.encoding.soapenc.VectorSerializer
> and
> > map it to Vector$1?
> > Vijay
> >
> > Scott Nichol wrote:
> >
> > > The Hashtable mapping is implicit: you do not need it in your
> > > deploymentdescriptor.
> > >
> > > As you can see, the error is actually finding a serializer for
> > > java.util.Vector$1.  This class exists back to JDK 1.2; it is an
> > > anonymous class implementing the Enumeration interface defined by
> the
> > > Vector#elements() method.  I take it that the elements in your
> Hashtable
> > > are such Enumerations.
> > >
> > > What you need to do is write a serializer and deserializer for such
> > > Enumerations and map them to java.util.Vector$1 (map the serializer
> on
> > > the server and the deserializer on the client).
> > >
> > > Alternatively, if you can rewrite the method (or add a new method)
> to
> > > return a Hashable of Vectors instead, the built-in Vector serializer
> > > will do the work for you.
> > >
> > > Scott Nichol
> > >
> > > ----- Original Message -----
> > > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > > To: <so...@xml.apache.org>; <so...@xml.apache.org>
> > > Sent: Thursday, January 02, 2003 12:30 PM
> > > Subject: Re: SOAP - method return
> > >
> > > > Scott,
> > > >
> > > > Here are the details.
> > > >
> > > > I guess i need to provide the mapping in my
> DeploymentDescriptor.xml.
> > > >
> > > > Here is my descriptor.
> > > > <dd:service xmlns:dd="http://xml.apache.org/xml-soap/deployment"
> > > >     id="urn:ldap">
> > > >      <dd:provider type="java"
> > > >               scope="Application"
> > > >               methods="getLDAP">
> > > >        <dd:java class="LDAPCall"  static="false" />
> > > >      </dd:provider>
> > > >
> > > >
> > >
> <dd:faultListener>org.apache.soap.server.DOMFaultListener</dd:faultListe
> > > ner>
> > > >
> > > >  <dd:mappings>
> > > >      <dd:map
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> > > >               xmlns:x="urn:ldap" qname="x:ldap"
> > > >               javaType="java.util.Hashtable"
> > > >
> > > >
> > >
> java2XMLClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> > > >
> > > >
> > >
> xml2JavaClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> > > />
> > > >
> > > >   </dd:mappings>
> > > > </dd:service>
> > > >
> > > > I am returning Hashtable from my method call.
> > > >
> > > > I am getting following exception.
> > > >
> > > > The SOAP Server says: http://localhost:8080/soap/servlet/rpcrouter
> > > > Ouch, the call failed:
> > > >   Fault Code   = SOAP-ENV:Server
> > > >   Fault String = java.lang.IllegalArgumentException: No Serializer
> > > found to
> > > > seri
> > > > alize a 'java.util.Vector$1' using encoding style
> > > > 'http://schemas.xmlsoap.org/so
> > > > ap/encoding/'.
> > > >
> > > > I have provide mapping for hashtable why it is throwing me error
> for
> > > vector
> > > > class?.
> > > > are  my mappings correct?
> > > >
> > > >
> > > > Vijay
> > > >
> > > >
> > > > Scott Nichol wrote:
> > > >
> > > > > A couple of things:
> > > > >
> > > > > 1. Which line of your code is line 36 where the exception is
> > > occurring?
> > > > >
> > > > > 2. Your code should check for a SOAP Fault before doing
> > > > > getReturnValue(), e.g.
> > > > >
> > > > >  Response resp = call.invoke(url, "");
> > > > >  if (resp.generatedFault()) {
> > > > >     Fault fault = resp.getFault();
> > > > >     System.err.println("Generated fault: " + fault);
> > > > >  } else {
> > > > >     Parameter p = resp.getReturnValue();
> > > > >     Hashtable values = (Hashtable)p.getValue();
> > > > >     ...
> > > > >
> > > > > If there is a fault, I believe that getReturnValue() will return
> > > null,
> > > > > so calling it without checking for a fault could lead to an NPE.
> > > > >
> > > > > 3. Although I take it you are using Apache SOAP on the server in
> > > this
> > > > > case, it is worth pointing out that some SOAP implementations
> will
> > > omit
> > > > > the return value from the SOAP envelope if its value is null
> (e.g.
> > > this
> > > > > happens in .NET when the return is not specified as being
> nillable).
> > > > > Therefore, it is good practice in your client code to check that
> > > > > getReturnValue() does not itself return null.
> > > > >
> > > > > Scott Nichol
> > > > >
> > > > > ----- Original Message -----
> > > > > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > > > > To: <so...@xml.apache.org>
> > > > > Sent: Thursday, January 02, 2003 11:54 AM
> > > > > Subject: SOAP - method return
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > I am doing LDAP call using soap .I want to return Hashtable
> from
> > > my
> > > > > > method call.
> > > > > > On my client site I am using following code to get my
> hashtable.
> > > > > >
> > > > > > Response resp = call.invoke(url, "");
> > > > > > Parameter p = resp.getReturnValue();
> > > > > >   Hashtable values = (Hashtable)p.getValue();
> > > > > >
> > > > > > I am getting following exception.
> > > > > >
> > > > > > The SOAP Server says:
> > > > > > http://localhost:8080/soap/servlet/rpcrouterException in t
> > > > > > hread "main" java.lang.NullPointerException
> > > > > >  at LDAP_client.main(LDAP_client.java:36)
> > > > > >
> > > > > > any help will be useful.
> > > > > >
> > > > > > Vijay
> > > > > > --
> > > > > > This communication is intended for the addressee(s) and may
> > > contain
> > > > > > confidential and legally privileged information.  We do not
> waive
> > > > > > confidentiality or privilege by mistransmission.  If you have
> > > received
> > > > > > this communication in error, any use, dissemination, printing
> or
> > > > > copying
> > > > > > is strictly prohibited; please destroy all electronic and
> paper
> > > copies
> > > > > > and notify the sender immediately.
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > To unsubscribe, e-mail:
> > > > > <ma...@xml.apache.org>
> > > > > > For additional commands, e-mail:
> > > > > <ma...@xml.apache.org>
> > > > > >
> > > > > >
> > > > >
> > > > > --
> > > > > To unsubscribe, e-mail:
> > > <ma...@xml.apache.org>
> > > > > For additional commands, e-mail:
> > > <ma...@xml.apache.org>
> > > >
> > > > --
> > > > This communication is intended for the addressee(s) and may
> contain
> > > > confidential and legally privileged information.  We do not waive
> > > > confidentiality or privilege by mistransmission.  If you have
> received
> > > this
> > > > communication in error, any use, dissemination, printing or
> copying is
> > > > strictly prohibited; please destroy all electronic and paper
> copies
> > > and
> > > > notify the sender immediately.
> > > >
> > > >
> > > >
> > > > --
> > > > To unsubscribe, e-mail:
> > > <ma...@xml.apache.org>
> > > > For additional commands, e-mail:
> > > <ma...@xml.apache.org>
> > > >
> > > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> <ma...@xml.apache.org>
> > > For additional commands, e-mail:
> <ma...@xml.apache.org>
> >
> > --
> > This communication is intended for the addressee(s) and may contain
> > confidential and legally privileged information.  We do not waive
> > confidentiality or privilege by mistransmission.  If you have received
> this
> > communication in error, any use, dissemination, printing or copying is
> > strictly prohibited; please destroy all electronic and paper copies
> and
> > notify the sender immediately.
> >
> >
> >
> > --
> > To unsubscribe, e-mail:
> <ma...@xml.apache.org>
> > For additional commands, e-mail:
> <ma...@xml.apache.org>
> >
> >
>
> --
> To unsubscribe, e-mail:   <ma...@xml.apache.org>
> For additional commands, e-mail: <ma...@xml.apache.org>

--
This communication is intended for the addressee(s) and may contain
confidential and legally privileged information.  We do not waive
confidentiality or privilege by mistransmission.  If you have received this
communication in error, any use, dissemination, printing or copying is
strictly prohibited; please destroy all electronic and paper copies and
notify the sender immediately.



--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>


Re: SOAP - method return

Posted by Vijay Shinde <Vi...@morganstanley.com>.
Scott,

Thanx for your help.
I solved my problem by making some changes in my method.
Now i am creating a dummy Hashtable and populating them with the result of
the Enumaration so i can just get a plain Hashtable in my method return
type.
In future i may need to return a java object.Thanx a lot for your  timly
help.

Thanx & Regards,
Vijay


Scott Nichol wrote:

> No.  Vector$1 is not a Vector, it is a class that implements
> Enumeration.
>
> Scott Nichol
>
> ----- Original Message -----
> From: "Vijay Shinde" <Vi...@morganstanley.com>
> To: <so...@xml.apache.org>
> Sent: Thursday, January 02, 2003 1:41 PM
> Subject: Re: SOAP - method return
>
> > Thanx Scott,
> > can u se this class org.apache.soap.encoding.soapenc.VectorSerializer
> and
> > map it to Vector$1?
> > Vijay
> >
> > Scott Nichol wrote:
> >
> > > The Hashtable mapping is implicit: you do not need it in your
> > > deploymentdescriptor.
> > >
> > > As you can see, the error is actually finding a serializer for
> > > java.util.Vector$1.  This class exists back to JDK 1.2; it is an
> > > anonymous class implementing the Enumeration interface defined by
> the
> > > Vector#elements() method.  I take it that the elements in your
> Hashtable
> > > are such Enumerations.
> > >
> > > What you need to do is write a serializer and deserializer for such
> > > Enumerations and map them to java.util.Vector$1 (map the serializer
> on
> > > the server and the deserializer on the client).
> > >
> > > Alternatively, if you can rewrite the method (or add a new method)
> to
> > > return a Hashable of Vectors instead, the built-in Vector serializer
> > > will do the work for you.
> > >
> > > Scott Nichol
> > >
> > > ----- Original Message -----
> > > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > > To: <so...@xml.apache.org>; <so...@xml.apache.org>
> > > Sent: Thursday, January 02, 2003 12:30 PM
> > > Subject: Re: SOAP - method return
> > >
> > > > Scott,
> > > >
> > > > Here are the details.
> > > >
> > > > I guess i need to provide the mapping in my
> DeploymentDescriptor.xml.
> > > >
> > > > Here is my descriptor.
> > > > <dd:service xmlns:dd="http://xml.apache.org/xml-soap/deployment"
> > > >     id="urn:ldap">
> > > >      <dd:provider type="java"
> > > >               scope="Application"
> > > >               methods="getLDAP">
> > > >        <dd:java class="LDAPCall"  static="false" />
> > > >      </dd:provider>
> > > >
> > > >
> > >
> <dd:faultListener>org.apache.soap.server.DOMFaultListener</dd:faultListe
> > > ner>
> > > >
> > > >  <dd:mappings>
> > > >      <dd:map
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> > > >               xmlns:x="urn:ldap" qname="x:ldap"
> > > >               javaType="java.util.Hashtable"
> > > >
> > > >
> > >
> java2XMLClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> > > >
> > > >
> > >
> xml2JavaClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> > > />
> > > >
> > > >   </dd:mappings>
> > > > </dd:service>
> > > >
> > > > I am returning Hashtable from my method call.
> > > >
> > > > I am getting following exception.
> > > >
> > > > The SOAP Server says: http://localhost:8080/soap/servlet/rpcrouter
> > > > Ouch, the call failed:
> > > >   Fault Code   = SOAP-ENV:Server
> > > >   Fault String = java.lang.IllegalArgumentException: No Serializer
> > > found to
> > > > seri
> > > > alize a 'java.util.Vector$1' using encoding style
> > > > 'http://schemas.xmlsoap.org/so
> > > > ap/encoding/'.
> > > >
> > > > I have provide mapping for hashtable why it is throwing me error
> for
> > > vector
> > > > class?.
> > > > are  my mappings correct?
> > > >
> > > >
> > > > Vijay
> > > >
> > > >
> > > > Scott Nichol wrote:
> > > >
> > > > > A couple of things:
> > > > >
> > > > > 1. Which line of your code is line 36 where the exception is
> > > occurring?
> > > > >
> > > > > 2. Your code should check for a SOAP Fault before doing
> > > > > getReturnValue(), e.g.
> > > > >
> > > > >  Response resp = call.invoke(url, "");
> > > > >  if (resp.generatedFault()) {
> > > > >     Fault fault = resp.getFault();
> > > > >     System.err.println("Generated fault: " + fault);
> > > > >  } else {
> > > > >     Parameter p = resp.getReturnValue();
> > > > >     Hashtable values = (Hashtable)p.getValue();
> > > > >     ...
> > > > >
> > > > > If there is a fault, I believe that getReturnValue() will return
> > > null,
> > > > > so calling it without checking for a fault could lead to an NPE.
> > > > >
> > > > > 3. Although I take it you are using Apache SOAP on the server in
> > > this
> > > > > case, it is worth pointing out that some SOAP implementations
> will
> > > omit
> > > > > the return value from the SOAP envelope if its value is null
> (e.g.
> > > this
> > > > > happens in .NET when the return is not specified as being
> nillable).
> > > > > Therefore, it is good practice in your client code to check that
> > > > > getReturnValue() does not itself return null.
> > > > >
> > > > > Scott Nichol
> > > > >
> > > > > ----- Original Message -----
> > > > > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > > > > To: <so...@xml.apache.org>
> > > > > Sent: Thursday, January 02, 2003 11:54 AM
> > > > > Subject: SOAP - method return
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > I am doing LDAP call using soap .I want to return Hashtable
> from
> > > my
> > > > > > method call.
> > > > > > On my client site I am using following code to get my
> hashtable.
> > > > > >
> > > > > > Response resp = call.invoke(url, "");
> > > > > > Parameter p = resp.getReturnValue();
> > > > > >   Hashtable values = (Hashtable)p.getValue();
> > > > > >
> > > > > > I am getting following exception.
> > > > > >
> > > > > > The SOAP Server says:
> > > > > > http://localhost:8080/soap/servlet/rpcrouterException in t
> > > > > > hread "main" java.lang.NullPointerException
> > > > > >  at LDAP_client.main(LDAP_client.java:36)
> > > > > >
> > > > > > any help will be useful.
> > > > > >
> > > > > > Vijay
> > > > > > --
> > > > > > This communication is intended for the addressee(s) and may
> > > contain
> > > > > > confidential and legally privileged information.  We do not
> waive
> > > > > > confidentiality or privilege by mistransmission.  If you have
> > > received
> > > > > > this communication in error, any use, dissemination, printing
> or
> > > > > copying
> > > > > > is strictly prohibited; please destroy all electronic and
> paper
> > > copies
> > > > > > and notify the sender immediately.
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > To unsubscribe, e-mail:
> > > > > <ma...@xml.apache.org>
> > > > > > For additional commands, e-mail:
> > > > > <ma...@xml.apache.org>
> > > > > >
> > > > > >
> > > > >
> > > > > --
> > > > > To unsubscribe, e-mail:
> > > <ma...@xml.apache.org>
> > > > > For additional commands, e-mail:
> > > <ma...@xml.apache.org>
> > > >
> > > > --
> > > > This communication is intended for the addressee(s) and may
> contain
> > > > confidential and legally privileged information.  We do not waive
> > > > confidentiality or privilege by mistransmission.  If you have
> received
> > > this
> > > > communication in error, any use, dissemination, printing or
> copying is
> > > > strictly prohibited; please destroy all electronic and paper
> copies
> > > and
> > > > notify the sender immediately.
> > > >
> > > >
> > > >
> > > > --
> > > > To unsubscribe, e-mail:
> > > <ma...@xml.apache.org>
> > > > For additional commands, e-mail:
> > > <ma...@xml.apache.org>
> > > >
> > > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> <ma...@xml.apache.org>
> > > For additional commands, e-mail:
> <ma...@xml.apache.org>
> >
> > --
> > This communication is intended for the addressee(s) and may contain
> > confidential and legally privileged information.  We do not waive
> > confidentiality or privilege by mistransmission.  If you have received
> this
> > communication in error, any use, dissemination, printing or copying is
> > strictly prohibited; please destroy all electronic and paper copies
> and
> > notify the sender immediately.
> >
> >
> >
> > --
> > To unsubscribe, e-mail:
> <ma...@xml.apache.org>
> > For additional commands, e-mail:
> <ma...@xml.apache.org>
> >
> >
>
> --
> To unsubscribe, e-mail:   <ma...@xml.apache.org>
> For additional commands, e-mail: <ma...@xml.apache.org>

--
This communication is intended for the addressee(s) and may contain
confidential and legally privileged information.  We do not waive
confidentiality or privilege by mistransmission.  If you have received this
communication in error, any use, dissemination, printing or copying is
strictly prohibited; please destroy all electronic and paper copies and
notify the sender immediately.



Re: SOAP - method return

Posted by Scott Nichol <sn...@scottnichol.com>.
No.  Vector$1 is not a Vector, it is a class that implements
Enumeration.

Scott Nichol

----- Original Message -----
From: "Vijay Shinde" <Vi...@morganstanley.com>
To: <so...@xml.apache.org>
Sent: Thursday, January 02, 2003 1:41 PM
Subject: Re: SOAP - method return


> Thanx Scott,
> can u se this class org.apache.soap.encoding.soapenc.VectorSerializer
and
> map it to Vector$1?
> Vijay
>
> Scott Nichol wrote:
>
> > The Hashtable mapping is implicit: you do not need it in your
> > deploymentdescriptor.
> >
> > As you can see, the error is actually finding a serializer for
> > java.util.Vector$1.  This class exists back to JDK 1.2; it is an
> > anonymous class implementing the Enumeration interface defined by
the
> > Vector#elements() method.  I take it that the elements in your
Hashtable
> > are such Enumerations.
> >
> > What you need to do is write a serializer and deserializer for such
> > Enumerations and map them to java.util.Vector$1 (map the serializer
on
> > the server and the deserializer on the client).
> >
> > Alternatively, if you can rewrite the method (or add a new method)
to
> > return a Hashable of Vectors instead, the built-in Vector serializer
> > will do the work for you.
> >
> > Scott Nichol
> >
> > ----- Original Message -----
> > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > To: <so...@xml.apache.org>; <so...@xml.apache.org>
> > Sent: Thursday, January 02, 2003 12:30 PM
> > Subject: Re: SOAP - method return
> >
> > > Scott,
> > >
> > > Here are the details.
> > >
> > > I guess i need to provide the mapping in my
DeploymentDescriptor.xml.
> > >
> > > Here is my descriptor.
> > > <dd:service xmlns:dd="http://xml.apache.org/xml-soap/deployment"
> > >     id="urn:ldap">
> > >      <dd:provider type="java"
> > >               scope="Application"
> > >               methods="getLDAP">
> > >        <dd:java class="LDAPCall"  static="false" />
> > >      </dd:provider>
> > >
> > >
> >
<dd:faultListener>org.apache.soap.server.DOMFaultListener</dd:faultListe
> > ner>
> > >
> > >  <dd:mappings>
> > >      <dd:map
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> > >               xmlns:x="urn:ldap" qname="x:ldap"
> > >               javaType="java.util.Hashtable"
> > >
> > >
> >
java2XMLClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> > >
> > >
> >
xml2JavaClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> > />
> > >
> > >   </dd:mappings>
> > > </dd:service>
> > >
> > > I am returning Hashtable from my method call.
> > >
> > > I am getting following exception.
> > >
> > > The SOAP Server says: http://localhost:8080/soap/servlet/rpcrouter
> > > Ouch, the call failed:
> > >   Fault Code   = SOAP-ENV:Server
> > >   Fault String = java.lang.IllegalArgumentException: No Serializer
> > found to
> > > seri
> > > alize a 'java.util.Vector$1' using encoding style
> > > 'http://schemas.xmlsoap.org/so
> > > ap/encoding/'.
> > >
> > > I have provide mapping for hashtable why it is throwing me error
for
> > vector
> > > class?.
> > > are  my mappings correct?
> > >
> > >
> > > Vijay
> > >
> > >
> > > Scott Nichol wrote:
> > >
> > > > A couple of things:
> > > >
> > > > 1. Which line of your code is line 36 where the exception is
> > occurring?
> > > >
> > > > 2. Your code should check for a SOAP Fault before doing
> > > > getReturnValue(), e.g.
> > > >
> > > >  Response resp = call.invoke(url, "");
> > > >  if (resp.generatedFault()) {
> > > >     Fault fault = resp.getFault();
> > > >     System.err.println("Generated fault: " + fault);
> > > >  } else {
> > > >     Parameter p = resp.getReturnValue();
> > > >     Hashtable values = (Hashtable)p.getValue();
> > > >     ...
> > > >
> > > > If there is a fault, I believe that getReturnValue() will return
> > null,
> > > > so calling it without checking for a fault could lead to an NPE.
> > > >
> > > > 3. Although I take it you are using Apache SOAP on the server in
> > this
> > > > case, it is worth pointing out that some SOAP implementations
will
> > omit
> > > > the return value from the SOAP envelope if its value is null
(e.g.
> > this
> > > > happens in .NET when the return is not specified as being
nillable).
> > > > Therefore, it is good practice in your client code to check that
> > > > getReturnValue() does not itself return null.
> > > >
> > > > Scott Nichol
> > > >
> > > > ----- Original Message -----
> > > > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > > > To: <so...@xml.apache.org>
> > > > Sent: Thursday, January 02, 2003 11:54 AM
> > > > Subject: SOAP - method return
> > > >
> > > > > Hi,
> > > > >
> > > > > I am doing LDAP call using soap .I want to return Hashtable
from
> > my
> > > > > method call.
> > > > > On my client site I am using following code to get my
hashtable.
> > > > >
> > > > > Response resp = call.invoke(url, "");
> > > > > Parameter p = resp.getReturnValue();
> > > > >   Hashtable values = (Hashtable)p.getValue();
> > > > >
> > > > > I am getting following exception.
> > > > >
> > > > > The SOAP Server says:
> > > > > http://localhost:8080/soap/servlet/rpcrouterException in t
> > > > > hread "main" java.lang.NullPointerException
> > > > >  at LDAP_client.main(LDAP_client.java:36)
> > > > >
> > > > > any help will be useful.
> > > > >
> > > > > Vijay
> > > > > --
> > > > > This communication is intended for the addressee(s) and may
> > contain
> > > > > confidential and legally privileged information.  We do not
waive
> > > > > confidentiality or privilege by mistransmission.  If you have
> > received
> > > > > this communication in error, any use, dissemination, printing
or
> > > > copying
> > > > > is strictly prohibited; please destroy all electronic and
paper
> > copies
> > > > > and notify the sender immediately.
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > To unsubscribe, e-mail:
> > > > <ma...@xml.apache.org>
> > > > > For additional commands, e-mail:
> > > > <ma...@xml.apache.org>
> > > > >
> > > > >
> > > >
> > > > --
> > > > To unsubscribe, e-mail:
> > <ma...@xml.apache.org>
> > > > For additional commands, e-mail:
> > <ma...@xml.apache.org>
> > >
> > > --
> > > This communication is intended for the addressee(s) and may
contain
> > > confidential and legally privileged information.  We do not waive
> > > confidentiality or privilege by mistransmission.  If you have
received
> > this
> > > communication in error, any use, dissemination, printing or
copying is
> > > strictly prohibited; please destroy all electronic and paper
copies
> > and
> > > notify the sender immediately.
> > >
> > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> > <ma...@xml.apache.org>
> > > For additional commands, e-mail:
> > <ma...@xml.apache.org>
> > >
> > >
> >
> > --
> > To unsubscribe, e-mail:
<ma...@xml.apache.org>
> > For additional commands, e-mail:
<ma...@xml.apache.org>
>
> --
> This communication is intended for the addressee(s) and may contain
> confidential and legally privileged information.  We do not waive
> confidentiality or privilege by mistransmission.  If you have received
this
> communication in error, any use, dissemination, printing or copying is
> strictly prohibited; please destroy all electronic and paper copies
and
> notify the sender immediately.
>
>
>
> --
> To unsubscribe, e-mail:
<ma...@xml.apache.org>
> For additional commands, e-mail:
<ma...@xml.apache.org>
>
>


Re: SOAP - method return

Posted by Scott Nichol <sn...@scottnichol.com>.
No.  Vector$1 is not a Vector, it is a class that implements
Enumeration.

Scott Nichol

----- Original Message -----
From: "Vijay Shinde" <Vi...@morganstanley.com>
To: <so...@xml.apache.org>
Sent: Thursday, January 02, 2003 1:41 PM
Subject: Re: SOAP - method return


> Thanx Scott,
> can u se this class org.apache.soap.encoding.soapenc.VectorSerializer
and
> map it to Vector$1?
> Vijay
>
> Scott Nichol wrote:
>
> > The Hashtable mapping is implicit: you do not need it in your
> > deploymentdescriptor.
> >
> > As you can see, the error is actually finding a serializer for
> > java.util.Vector$1.  This class exists back to JDK 1.2; it is an
> > anonymous class implementing the Enumeration interface defined by
the
> > Vector#elements() method.  I take it that the elements in your
Hashtable
> > are such Enumerations.
> >
> > What you need to do is write a serializer and deserializer for such
> > Enumerations and map them to java.util.Vector$1 (map the serializer
on
> > the server and the deserializer on the client).
> >
> > Alternatively, if you can rewrite the method (or add a new method)
to
> > return a Hashable of Vectors instead, the built-in Vector serializer
> > will do the work for you.
> >
> > Scott Nichol
> >
> > ----- Original Message -----
> > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > To: <so...@xml.apache.org>; <so...@xml.apache.org>
> > Sent: Thursday, January 02, 2003 12:30 PM
> > Subject: Re: SOAP - method return
> >
> > > Scott,
> > >
> > > Here are the details.
> > >
> > > I guess i need to provide the mapping in my
DeploymentDescriptor.xml.
> > >
> > > Here is my descriptor.
> > > <dd:service xmlns:dd="http://xml.apache.org/xml-soap/deployment"
> > >     id="urn:ldap">
> > >      <dd:provider type="java"
> > >               scope="Application"
> > >               methods="getLDAP">
> > >        <dd:java class="LDAPCall"  static="false" />
> > >      </dd:provider>
> > >
> > >
> >
<dd:faultListener>org.apache.soap.server.DOMFaultListener</dd:faultListe
> > ner>
> > >
> > >  <dd:mappings>
> > >      <dd:map
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> > >               xmlns:x="urn:ldap" qname="x:ldap"
> > >               javaType="java.util.Hashtable"
> > >
> > >
> >
java2XMLClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> > >
> > >
> >
xml2JavaClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> > />
> > >
> > >   </dd:mappings>
> > > </dd:service>
> > >
> > > I am returning Hashtable from my method call.
> > >
> > > I am getting following exception.
> > >
> > > The SOAP Server says: http://localhost:8080/soap/servlet/rpcrouter
> > > Ouch, the call failed:
> > >   Fault Code   = SOAP-ENV:Server
> > >   Fault String = java.lang.IllegalArgumentException: No Serializer
> > found to
> > > seri
> > > alize a 'java.util.Vector$1' using encoding style
> > > 'http://schemas.xmlsoap.org/so
> > > ap/encoding/'.
> > >
> > > I have provide mapping for hashtable why it is throwing me error
for
> > vector
> > > class?.
> > > are  my mappings correct?
> > >
> > >
> > > Vijay
> > >
> > >
> > > Scott Nichol wrote:
> > >
> > > > A couple of things:
> > > >
> > > > 1. Which line of your code is line 36 where the exception is
> > occurring?
> > > >
> > > > 2. Your code should check for a SOAP Fault before doing
> > > > getReturnValue(), e.g.
> > > >
> > > >  Response resp = call.invoke(url, "");
> > > >  if (resp.generatedFault()) {
> > > >     Fault fault = resp.getFault();
> > > >     System.err.println("Generated fault: " + fault);
> > > >  } else {
> > > >     Parameter p = resp.getReturnValue();
> > > >     Hashtable values = (Hashtable)p.getValue();
> > > >     ...
> > > >
> > > > If there is a fault, I believe that getReturnValue() will return
> > null,
> > > > so calling it without checking for a fault could lead to an NPE.
> > > >
> > > > 3. Although I take it you are using Apache SOAP on the server in
> > this
> > > > case, it is worth pointing out that some SOAP implementations
will
> > omit
> > > > the return value from the SOAP envelope if its value is null
(e.g.
> > this
> > > > happens in .NET when the return is not specified as being
nillable).
> > > > Therefore, it is good practice in your client code to check that
> > > > getReturnValue() does not itself return null.
> > > >
> > > > Scott Nichol
> > > >
> > > > ----- Original Message -----
> > > > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > > > To: <so...@xml.apache.org>
> > > > Sent: Thursday, January 02, 2003 11:54 AM
> > > > Subject: SOAP - method return
> > > >
> > > > > Hi,
> > > > >
> > > > > I am doing LDAP call using soap .I want to return Hashtable
from
> > my
> > > > > method call.
> > > > > On my client site I am using following code to get my
hashtable.
> > > > >
> > > > > Response resp = call.invoke(url, "");
> > > > > Parameter p = resp.getReturnValue();
> > > > >   Hashtable values = (Hashtable)p.getValue();
> > > > >
> > > > > I am getting following exception.
> > > > >
> > > > > The SOAP Server says:
> > > > > http://localhost:8080/soap/servlet/rpcrouterException in t
> > > > > hread "main" java.lang.NullPointerException
> > > > >  at LDAP_client.main(LDAP_client.java:36)
> > > > >
> > > > > any help will be useful.
> > > > >
> > > > > Vijay
> > > > > --
> > > > > This communication is intended for the addressee(s) and may
> > contain
> > > > > confidential and legally privileged information.  We do not
waive
> > > > > confidentiality or privilege by mistransmission.  If you have
> > received
> > > > > this communication in error, any use, dissemination, printing
or
> > > > copying
> > > > > is strictly prohibited; please destroy all electronic and
paper
> > copies
> > > > > and notify the sender immediately.
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > To unsubscribe, e-mail:
> > > > <ma...@xml.apache.org>
> > > > > For additional commands, e-mail:
> > > > <ma...@xml.apache.org>
> > > > >
> > > > >
> > > >
> > > > --
> > > > To unsubscribe, e-mail:
> > <ma...@xml.apache.org>
> > > > For additional commands, e-mail:
> > <ma...@xml.apache.org>
> > >
> > > --
> > > This communication is intended for the addressee(s) and may
contain
> > > confidential and legally privileged information.  We do not waive
> > > confidentiality or privilege by mistransmission.  If you have
received
> > this
> > > communication in error, any use, dissemination, printing or
copying is
> > > strictly prohibited; please destroy all electronic and paper
copies
> > and
> > > notify the sender immediately.
> > >
> > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> > <ma...@xml.apache.org>
> > > For additional commands, e-mail:
> > <ma...@xml.apache.org>
> > >
> > >
> >
> > --
> > To unsubscribe, e-mail:
<ma...@xml.apache.org>
> > For additional commands, e-mail:
<ma...@xml.apache.org>
>
> --
> This communication is intended for the addressee(s) and may contain
> confidential and legally privileged information.  We do not waive
> confidentiality or privilege by mistransmission.  If you have received
this
> communication in error, any use, dissemination, printing or copying is
> strictly prohibited; please destroy all electronic and paper copies
and
> notify the sender immediately.
>
>
>
> --
> To unsubscribe, e-mail:
<ma...@xml.apache.org>
> For additional commands, e-mail:
<ma...@xml.apache.org>
>
>


--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>


Re: SOAP - method return

Posted by Vijay Shinde <Vi...@morganstanley.com>.
Thanx Scott,
can u se this class org.apache.soap.encoding.soapenc.VectorSerializer and
map it to Vector$1?
Vijay

Scott Nichol wrote:

> The Hashtable mapping is implicit: you do not need it in your
> deploymentdescriptor.
>
> As you can see, the error is actually finding a serializer for
> java.util.Vector$1.  This class exists back to JDK 1.2; it is an
> anonymous class implementing the Enumeration interface defined by the
> Vector#elements() method.  I take it that the elements in your Hashtable
> are such Enumerations.
>
> What you need to do is write a serializer and deserializer for such
> Enumerations and map them to java.util.Vector$1 (map the serializer on
> the server and the deserializer on the client).
>
> Alternatively, if you can rewrite the method (or add a new method) to
> return a Hashable of Vectors instead, the built-in Vector serializer
> will do the work for you.
>
> Scott Nichol
>
> ----- Original Message -----
> From: "Vijay Shinde" <Vi...@morganstanley.com>
> To: <so...@xml.apache.org>; <so...@xml.apache.org>
> Sent: Thursday, January 02, 2003 12:30 PM
> Subject: Re: SOAP - method return
>
> > Scott,
> >
> > Here are the details.
> >
> > I guess i need to provide the mapping in my DeploymentDescriptor.xml.
> >
> > Here is my descriptor.
> > <dd:service xmlns:dd="http://xml.apache.org/xml-soap/deployment"
> >     id="urn:ldap">
> >      <dd:provider type="java"
> >               scope="Application"
> >               methods="getLDAP">
> >        <dd:java class="LDAPCall"  static="false" />
> >      </dd:provider>
> >
> >
> <dd:faultListener>org.apache.soap.server.DOMFaultListener</dd:faultListe
> ner>
> >
> >  <dd:mappings>
> >      <dd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> >               xmlns:x="urn:ldap" qname="x:ldap"
> >               javaType="java.util.Hashtable"
> >
> >
> java2XMLClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> >
> >
> xml2JavaClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> />
> >
> >   </dd:mappings>
> > </dd:service>
> >
> > I am returning Hashtable from my method call.
> >
> > I am getting following exception.
> >
> > The SOAP Server says: http://localhost:8080/soap/servlet/rpcrouter
> > Ouch, the call failed:
> >   Fault Code   = SOAP-ENV:Server
> >   Fault String = java.lang.IllegalArgumentException: No Serializer
> found to
> > seri
> > alize a 'java.util.Vector$1' using encoding style
> > 'http://schemas.xmlsoap.org/so
> > ap/encoding/'.
> >
> > I have provide mapping for hashtable why it is throwing me error for
> vector
> > class?.
> > are  my mappings correct?
> >
> >
> > Vijay
> >
> >
> > Scott Nichol wrote:
> >
> > > A couple of things:
> > >
> > > 1. Which line of your code is line 36 where the exception is
> occurring?
> > >
> > > 2. Your code should check for a SOAP Fault before doing
> > > getReturnValue(), e.g.
> > >
> > >  Response resp = call.invoke(url, "");
> > >  if (resp.generatedFault()) {
> > >     Fault fault = resp.getFault();
> > >     System.err.println("Generated fault: " + fault);
> > >  } else {
> > >     Parameter p = resp.getReturnValue();
> > >     Hashtable values = (Hashtable)p.getValue();
> > >     ...
> > >
> > > If there is a fault, I believe that getReturnValue() will return
> null,
> > > so calling it without checking for a fault could lead to an NPE.
> > >
> > > 3. Although I take it you are using Apache SOAP on the server in
> this
> > > case, it is worth pointing out that some SOAP implementations will
> omit
> > > the return value from the SOAP envelope if its value is null (e.g.
> this
> > > happens in .NET when the return is not specified as being nillable).
> > > Therefore, it is good practice in your client code to check that
> > > getReturnValue() does not itself return null.
> > >
> > > Scott Nichol
> > >
> > > ----- Original Message -----
> > > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > > To: <so...@xml.apache.org>
> > > Sent: Thursday, January 02, 2003 11:54 AM
> > > Subject: SOAP - method return
> > >
> > > > Hi,
> > > >
> > > > I am doing LDAP call using soap .I want to return Hashtable from
> my
> > > > method call.
> > > > On my client site I am using following code to get my hashtable.
> > > >
> > > > Response resp = call.invoke(url, "");
> > > > Parameter p = resp.getReturnValue();
> > > >   Hashtable values = (Hashtable)p.getValue();
> > > >
> > > > I am getting following exception.
> > > >
> > > > The SOAP Server says:
> > > > http://localhost:8080/soap/servlet/rpcrouterException in t
> > > > hread "main" java.lang.NullPointerException
> > > >  at LDAP_client.main(LDAP_client.java:36)
> > > >
> > > > any help will be useful.
> > > >
> > > > Vijay
> > > > --
> > > > This communication is intended for the addressee(s) and may
> contain
> > > > confidential and legally privileged information.  We do not waive
> > > > confidentiality or privilege by mistransmission.  If you have
> received
> > > > this communication in error, any use, dissemination, printing or
> > > copying
> > > > is strictly prohibited; please destroy all electronic and paper
> copies
> > > > and notify the sender immediately.
> > > >
> > > >
> > > >
> > > > --
> > > > To unsubscribe, e-mail:
> > > <ma...@xml.apache.org>
> > > > For additional commands, e-mail:
> > > <ma...@xml.apache.org>
> > > >
> > > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> <ma...@xml.apache.org>
> > > For additional commands, e-mail:
> <ma...@xml.apache.org>
> >
> > --
> > This communication is intended for the addressee(s) and may contain
> > confidential and legally privileged information.  We do not waive
> > confidentiality or privilege by mistransmission.  If you have received
> this
> > communication in error, any use, dissemination, printing or copying is
> > strictly prohibited; please destroy all electronic and paper copies
> and
> > notify the sender immediately.
> >
> >
> >
> > --
> > To unsubscribe, e-mail:
> <ma...@xml.apache.org>
> > For additional commands, e-mail:
> <ma...@xml.apache.org>
> >
> >
>
> --
> To unsubscribe, e-mail:   <ma...@xml.apache.org>
> For additional commands, e-mail: <ma...@xml.apache.org>

--
This communication is intended for the addressee(s) and may contain
confidential and legally privileged information.  We do not waive
confidentiality or privilege by mistransmission.  If you have received this
communication in error, any use, dissemination, printing or copying is
strictly prohibited; please destroy all electronic and paper copies and
notify the sender immediately.



--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>


Re: SOAP - method return

Posted by Vijay Shinde <Vi...@morganstanley.com>.
Thanx Scott,
can u se this class org.apache.soap.encoding.soapenc.VectorSerializer and
map it to Vector$1?
Vijay

Scott Nichol wrote:

> The Hashtable mapping is implicit: you do not need it in your
> deploymentdescriptor.
>
> As you can see, the error is actually finding a serializer for
> java.util.Vector$1.  This class exists back to JDK 1.2; it is an
> anonymous class implementing the Enumeration interface defined by the
> Vector#elements() method.  I take it that the elements in your Hashtable
> are such Enumerations.
>
> What you need to do is write a serializer and deserializer for such
> Enumerations and map them to java.util.Vector$1 (map the serializer on
> the server and the deserializer on the client).
>
> Alternatively, if you can rewrite the method (or add a new method) to
> return a Hashable of Vectors instead, the built-in Vector serializer
> will do the work for you.
>
> Scott Nichol
>
> ----- Original Message -----
> From: "Vijay Shinde" <Vi...@morganstanley.com>
> To: <so...@xml.apache.org>; <so...@xml.apache.org>
> Sent: Thursday, January 02, 2003 12:30 PM
> Subject: Re: SOAP - method return
>
> > Scott,
> >
> > Here are the details.
> >
> > I guess i need to provide the mapping in my DeploymentDescriptor.xml.
> >
> > Here is my descriptor.
> > <dd:service xmlns:dd="http://xml.apache.org/xml-soap/deployment"
> >     id="urn:ldap">
> >      <dd:provider type="java"
> >               scope="Application"
> >               methods="getLDAP">
> >        <dd:java class="LDAPCall"  static="false" />
> >      </dd:provider>
> >
> >
> <dd:faultListener>org.apache.soap.server.DOMFaultListener</dd:faultListe
> ner>
> >
> >  <dd:mappings>
> >      <dd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> >               xmlns:x="urn:ldap" qname="x:ldap"
> >               javaType="java.util.Hashtable"
> >
> >
> java2XMLClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> >
> >
> xml2JavaClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
> />
> >
> >   </dd:mappings>
> > </dd:service>
> >
> > I am returning Hashtable from my method call.
> >
> > I am getting following exception.
> >
> > The SOAP Server says: http://localhost:8080/soap/servlet/rpcrouter
> > Ouch, the call failed:
> >   Fault Code   = SOAP-ENV:Server
> >   Fault String = java.lang.IllegalArgumentException: No Serializer
> found to
> > seri
> > alize a 'java.util.Vector$1' using encoding style
> > 'http://schemas.xmlsoap.org/so
> > ap/encoding/'.
> >
> > I have provide mapping for hashtable why it is throwing me error for
> vector
> > class?.
> > are  my mappings correct?
> >
> >
> > Vijay
> >
> >
> > Scott Nichol wrote:
> >
> > > A couple of things:
> > >
> > > 1. Which line of your code is line 36 where the exception is
> occurring?
> > >
> > > 2. Your code should check for a SOAP Fault before doing
> > > getReturnValue(), e.g.
> > >
> > >  Response resp = call.invoke(url, "");
> > >  if (resp.generatedFault()) {
> > >     Fault fault = resp.getFault();
> > >     System.err.println("Generated fault: " + fault);
> > >  } else {
> > >     Parameter p = resp.getReturnValue();
> > >     Hashtable values = (Hashtable)p.getValue();
> > >     ...
> > >
> > > If there is a fault, I believe that getReturnValue() will return
> null,
> > > so calling it without checking for a fault could lead to an NPE.
> > >
> > > 3. Although I take it you are using Apache SOAP on the server in
> this
> > > case, it is worth pointing out that some SOAP implementations will
> omit
> > > the return value from the SOAP envelope if its value is null (e.g.
> this
> > > happens in .NET when the return is not specified as being nillable).
> > > Therefore, it is good practice in your client code to check that
> > > getReturnValue() does not itself return null.
> > >
> > > Scott Nichol
> > >
> > > ----- Original Message -----
> > > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > > To: <so...@xml.apache.org>
> > > Sent: Thursday, January 02, 2003 11:54 AM
> > > Subject: SOAP - method return
> > >
> > > > Hi,
> > > >
> > > > I am doing LDAP call using soap .I want to return Hashtable from
> my
> > > > method call.
> > > > On my client site I am using following code to get my hashtable.
> > > >
> > > > Response resp = call.invoke(url, "");
> > > > Parameter p = resp.getReturnValue();
> > > >   Hashtable values = (Hashtable)p.getValue();
> > > >
> > > > I am getting following exception.
> > > >
> > > > The SOAP Server says:
> > > > http://localhost:8080/soap/servlet/rpcrouterException in t
> > > > hread "main" java.lang.NullPointerException
> > > >  at LDAP_client.main(LDAP_client.java:36)
> > > >
> > > > any help will be useful.
> > > >
> > > > Vijay
> > > > --
> > > > This communication is intended for the addressee(s) and may
> contain
> > > > confidential and legally privileged information.  We do not waive
> > > > confidentiality or privilege by mistransmission.  If you have
> received
> > > > this communication in error, any use, dissemination, printing or
> > > copying
> > > > is strictly prohibited; please destroy all electronic and paper
> copies
> > > > and notify the sender immediately.
> > > >
> > > >
> > > >
> > > > --
> > > > To unsubscribe, e-mail:
> > > <ma...@xml.apache.org>
> > > > For additional commands, e-mail:
> > > <ma...@xml.apache.org>
> > > >
> > > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> <ma...@xml.apache.org>
> > > For additional commands, e-mail:
> <ma...@xml.apache.org>
> >
> > --
> > This communication is intended for the addressee(s) and may contain
> > confidential and legally privileged information.  We do not waive
> > confidentiality or privilege by mistransmission.  If you have received
> this
> > communication in error, any use, dissemination, printing or copying is
> > strictly prohibited; please destroy all electronic and paper copies
> and
> > notify the sender immediately.
> >
> >
> >
> > --
> > To unsubscribe, e-mail:
> <ma...@xml.apache.org>
> > For additional commands, e-mail:
> <ma...@xml.apache.org>
> >
> >
>
> --
> To unsubscribe, e-mail:   <ma...@xml.apache.org>
> For additional commands, e-mail: <ma...@xml.apache.org>

--
This communication is intended for the addressee(s) and may contain
confidential and legally privileged information.  We do not waive
confidentiality or privilege by mistransmission.  If you have received this
communication in error, any use, dissemination, printing or copying is
strictly prohibited; please destroy all electronic and paper copies and
notify the sender immediately.



Re: SOAP - method return

Posted by Scott Nichol <sn...@scottnichol.com>.
The Hashtable mapping is implicit: you do not need it in your
deploymentdescriptor.

As you can see, the error is actually finding a serializer for
java.util.Vector$1.  This class exists back to JDK 1.2; it is an
anonymous class implementing the Enumeration interface defined by the
Vector#elements() method.  I take it that the elements in your Hashtable
are such Enumerations.

What you need to do is write a serializer and deserializer for such
Enumerations and map them to java.util.Vector$1 (map the serializer on
the server and the deserializer on the client).

Alternatively, if you can rewrite the method (or add a new method) to
return a Hashable of Vectors instead, the built-in Vector serializer
will do the work for you.

Scott Nichol

----- Original Message -----
From: "Vijay Shinde" <Vi...@morganstanley.com>
To: <so...@xml.apache.org>; <so...@xml.apache.org>
Sent: Thursday, January 02, 2003 12:30 PM
Subject: Re: SOAP - method return


> Scott,
>
> Here are the details.
>
> I guess i need to provide the mapping in my DeploymentDescriptor.xml.
>
> Here is my descriptor.
> <dd:service xmlns:dd="http://xml.apache.org/xml-soap/deployment"
>     id="urn:ldap">
>      <dd:provider type="java"
>               scope="Application"
>               methods="getLDAP">
>        <dd:java class="LDAPCall"  static="false" />
>      </dd:provider>
>
>
<dd:faultListener>org.apache.soap.server.DOMFaultListener</dd:faultListe
ner>
>
>  <dd:mappings>
>      <dd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>               xmlns:x="urn:ldap" qname="x:ldap"
>               javaType="java.util.Hashtable"
>
>
java2XMLClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
>
>
xml2JavaClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
/>
>
>   </dd:mappings>
> </dd:service>
>
> I am returning Hashtable from my method call.
>
> I am getting following exception.
>
> The SOAP Server says: http://localhost:8080/soap/servlet/rpcrouter
> Ouch, the call failed:
>   Fault Code   = SOAP-ENV:Server
>   Fault String = java.lang.IllegalArgumentException: No Serializer
found to
> seri
> alize a 'java.util.Vector$1' using encoding style
> 'http://schemas.xmlsoap.org/so
> ap/encoding/'.
>
> I have provide mapping for hashtable why it is throwing me error for
vector
> class?.
> are  my mappings correct?
>
>
> Vijay
>
>
> Scott Nichol wrote:
>
> > A couple of things:
> >
> > 1. Which line of your code is line 36 where the exception is
occurring?
> >
> > 2. Your code should check for a SOAP Fault before doing
> > getReturnValue(), e.g.
> >
> >  Response resp = call.invoke(url, "");
> >  if (resp.generatedFault()) {
> >     Fault fault = resp.getFault();
> >     System.err.println("Generated fault: " + fault);
> >  } else {
> >     Parameter p = resp.getReturnValue();
> >     Hashtable values = (Hashtable)p.getValue();
> >     ...
> >
> > If there is a fault, I believe that getReturnValue() will return
null,
> > so calling it without checking for a fault could lead to an NPE.
> >
> > 3. Although I take it you are using Apache SOAP on the server in
this
> > case, it is worth pointing out that some SOAP implementations will
omit
> > the return value from the SOAP envelope if its value is null (e.g.
this
> > happens in .NET when the return is not specified as being nillable).
> > Therefore, it is good practice in your client code to check that
> > getReturnValue() does not itself return null.
> >
> > Scott Nichol
> >
> > ----- Original Message -----
> > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > To: <so...@xml.apache.org>
> > Sent: Thursday, January 02, 2003 11:54 AM
> > Subject: SOAP - method return
> >
> > > Hi,
> > >
> > > I am doing LDAP call using soap .I want to return Hashtable from
my
> > > method call.
> > > On my client site I am using following code to get my hashtable.
> > >
> > > Response resp = call.invoke(url, "");
> > > Parameter p = resp.getReturnValue();
> > >   Hashtable values = (Hashtable)p.getValue();
> > >
> > > I am getting following exception.
> > >
> > > The SOAP Server says:
> > > http://localhost:8080/soap/servlet/rpcrouterException in t
> > > hread "main" java.lang.NullPointerException
> > >  at LDAP_client.main(LDAP_client.java:36)
> > >
> > > any help will be useful.
> > >
> > > Vijay
> > > --
> > > This communication is intended for the addressee(s) and may
contain
> > > confidential and legally privileged information.  We do not waive
> > > confidentiality or privilege by mistransmission.  If you have
received
> > > this communication in error, any use, dissemination, printing or
> > copying
> > > is strictly prohibited; please destroy all electronic and paper
copies
> > > and notify the sender immediately.
> > >
> > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> > <ma...@xml.apache.org>
> > > For additional commands, e-mail:
> > <ma...@xml.apache.org>
> > >
> > >
> >
> > --
> > To unsubscribe, e-mail:
<ma...@xml.apache.org>
> > For additional commands, e-mail:
<ma...@xml.apache.org>
>
> --
> This communication is intended for the addressee(s) and may contain
> confidential and legally privileged information.  We do not waive
> confidentiality or privilege by mistransmission.  If you have received
this
> communication in error, any use, dissemination, printing or copying is
> strictly prohibited; please destroy all electronic and paper copies
and
> notify the sender immediately.
>
>
>
> --
> To unsubscribe, e-mail:
<ma...@xml.apache.org>
> For additional commands, e-mail:
<ma...@xml.apache.org>
>
>


--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>


Re: SOAP - method return

Posted by Scott Nichol <sn...@scottnichol.com>.
The Hashtable mapping is implicit: you do not need it in your
deploymentdescriptor.

As you can see, the error is actually finding a serializer for
java.util.Vector$1.  This class exists back to JDK 1.2; it is an
anonymous class implementing the Enumeration interface defined by the
Vector#elements() method.  I take it that the elements in your Hashtable
are such Enumerations.

What you need to do is write a serializer and deserializer for such
Enumerations and map them to java.util.Vector$1 (map the serializer on
the server and the deserializer on the client).

Alternatively, if you can rewrite the method (or add a new method) to
return a Hashable of Vectors instead, the built-in Vector serializer
will do the work for you.

Scott Nichol

----- Original Message -----
From: "Vijay Shinde" <Vi...@morganstanley.com>
To: <so...@xml.apache.org>; <so...@xml.apache.org>
Sent: Thursday, January 02, 2003 12:30 PM
Subject: Re: SOAP - method return


> Scott,
>
> Here are the details.
>
> I guess i need to provide the mapping in my DeploymentDescriptor.xml.
>
> Here is my descriptor.
> <dd:service xmlns:dd="http://xml.apache.org/xml-soap/deployment"
>     id="urn:ldap">
>      <dd:provider type="java"
>               scope="Application"
>               methods="getLDAP">
>        <dd:java class="LDAPCall"  static="false" />
>      </dd:provider>
>
>
<dd:faultListener>org.apache.soap.server.DOMFaultListener</dd:faultListe
ner>
>
>  <dd:mappings>
>      <dd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>               xmlns:x="urn:ldap" qname="x:ldap"
>               javaType="java.util.Hashtable"
>
>
java2XMLClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
>
>
xml2JavaClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"
/>
>
>   </dd:mappings>
> </dd:service>
>
> I am returning Hashtable from my method call.
>
> I am getting following exception.
>
> The SOAP Server says: http://localhost:8080/soap/servlet/rpcrouter
> Ouch, the call failed:
>   Fault Code   = SOAP-ENV:Server
>   Fault String = java.lang.IllegalArgumentException: No Serializer
found to
> seri
> alize a 'java.util.Vector$1' using encoding style
> 'http://schemas.xmlsoap.org/so
> ap/encoding/'.
>
> I have provide mapping for hashtable why it is throwing me error for
vector
> class?.
> are  my mappings correct?
>
>
> Vijay
>
>
> Scott Nichol wrote:
>
> > A couple of things:
> >
> > 1. Which line of your code is line 36 where the exception is
occurring?
> >
> > 2. Your code should check for a SOAP Fault before doing
> > getReturnValue(), e.g.
> >
> >  Response resp = call.invoke(url, "");
> >  if (resp.generatedFault()) {
> >     Fault fault = resp.getFault();
> >     System.err.println("Generated fault: " + fault);
> >  } else {
> >     Parameter p = resp.getReturnValue();
> >     Hashtable values = (Hashtable)p.getValue();
> >     ...
> >
> > If there is a fault, I believe that getReturnValue() will return
null,
> > so calling it without checking for a fault could lead to an NPE.
> >
> > 3. Although I take it you are using Apache SOAP on the server in
this
> > case, it is worth pointing out that some SOAP implementations will
omit
> > the return value from the SOAP envelope if its value is null (e.g.
this
> > happens in .NET when the return is not specified as being nillable).
> > Therefore, it is good practice in your client code to check that
> > getReturnValue() does not itself return null.
> >
> > Scott Nichol
> >
> > ----- Original Message -----
> > From: "Vijay Shinde" <Vi...@morganstanley.com>
> > To: <so...@xml.apache.org>
> > Sent: Thursday, January 02, 2003 11:54 AM
> > Subject: SOAP - method return
> >
> > > Hi,
> > >
> > > I am doing LDAP call using soap .I want to return Hashtable from
my
> > > method call.
> > > On my client site I am using following code to get my hashtable.
> > >
> > > Response resp = call.invoke(url, "");
> > > Parameter p = resp.getReturnValue();
> > >   Hashtable values = (Hashtable)p.getValue();
> > >
> > > I am getting following exception.
> > >
> > > The SOAP Server says:
> > > http://localhost:8080/soap/servlet/rpcrouterException in t
> > > hread "main" java.lang.NullPointerException
> > >  at LDAP_client.main(LDAP_client.java:36)
> > >
> > > any help will be useful.
> > >
> > > Vijay
> > > --
> > > This communication is intended for the addressee(s) and may
contain
> > > confidential and legally privileged information.  We do not waive
> > > confidentiality or privilege by mistransmission.  If you have
received
> > > this communication in error, any use, dissemination, printing or
> > copying
> > > is strictly prohibited; please destroy all electronic and paper
copies
> > > and notify the sender immediately.
> > >
> > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> > <ma...@xml.apache.org>
> > > For additional commands, e-mail:
> > <ma...@xml.apache.org>
> > >
> > >
> >
> > --
> > To unsubscribe, e-mail:
<ma...@xml.apache.org>
> > For additional commands, e-mail:
<ma...@xml.apache.org>
>
> --
> This communication is intended for the addressee(s) and may contain
> confidential and legally privileged information.  We do not waive
> confidentiality or privilege by mistransmission.  If you have received
this
> communication in error, any use, dissemination, printing or copying is
> strictly prohibited; please destroy all electronic and paper copies
and
> notify the sender immediately.
>
>
>
> --
> To unsubscribe, e-mail:
<ma...@xml.apache.org>
> For additional commands, e-mail:
<ma...@xml.apache.org>
>
>


Re: SOAP - method return

Posted by Vijay Shinde <Vi...@morganstanley.com>.
Scott,

Here are the details.

I guess i need to provide the mapping in my DeploymentDescriptor.xml.

Here is my descriptor.
<dd:service xmlns:dd="http://xml.apache.org/xml-soap/deployment"
    id="urn:ldap">
     <dd:provider type="java"
              scope="Application"
              methods="getLDAP">
       <dd:java class="LDAPCall"  static="false" />
     </dd:provider>

<dd:faultListener>org.apache.soap.server.DOMFaultListener</dd:faultListener>

 <dd:mappings>
     <dd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
              xmlns:x="urn:ldap" qname="x:ldap"
              javaType="java.util.Hashtable"

java2XMLClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"

xml2JavaClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"/>

  </dd:mappings>
</dd:service>

I am returning Hashtable from my method call.

I am getting following exception.

The SOAP Server says: http://localhost:8080/soap/servlet/rpcrouter
Ouch, the call failed:
  Fault Code   = SOAP-ENV:Server
  Fault String = java.lang.IllegalArgumentException: No Serializer found to
seri
alize a 'java.util.Vector$1' using encoding style
'http://schemas.xmlsoap.org/so
ap/encoding/'.

I have provide mapping for hashtable why it is throwing me error for vector
class?.
are  my mappings correct?


Vijay


Scott Nichol wrote:

> A couple of things:
>
> 1. Which line of your code is line 36 where the exception is occurring?
>
> 2. Your code should check for a SOAP Fault before doing
> getReturnValue(), e.g.
>
>  Response resp = call.invoke(url, "");
>  if (resp.generatedFault()) {
>     Fault fault = resp.getFault();
>     System.err.println("Generated fault: " + fault);
>  } else {
>     Parameter p = resp.getReturnValue();
>     Hashtable values = (Hashtable)p.getValue();
>     ...
>
> If there is a fault, I believe that getReturnValue() will return null,
> so calling it without checking for a fault could lead to an NPE.
>
> 3. Although I take it you are using Apache SOAP on the server in this
> case, it is worth pointing out that some SOAP implementations will omit
> the return value from the SOAP envelope if its value is null (e.g. this
> happens in .NET when the return is not specified as being nillable).
> Therefore, it is good practice in your client code to check that
> getReturnValue() does not itself return null.
>
> Scott Nichol
>
> ----- Original Message -----
> From: "Vijay Shinde" <Vi...@morganstanley.com>
> To: <so...@xml.apache.org>
> Sent: Thursday, January 02, 2003 11:54 AM
> Subject: SOAP - method return
>
> > Hi,
> >
> > I am doing LDAP call using soap .I want to return Hashtable from my
> > method call.
> > On my client site I am using following code to get my hashtable.
> >
> > Response resp = call.invoke(url, "");
> > Parameter p = resp.getReturnValue();
> >   Hashtable values = (Hashtable)p.getValue();
> >
> > I am getting following exception.
> >
> > The SOAP Server says:
> > http://localhost:8080/soap/servlet/rpcrouterException in t
> > hread "main" java.lang.NullPointerException
> >  at LDAP_client.main(LDAP_client.java:36)
> >
> > any help will be useful.
> >
> > Vijay
> > --
> > This communication is intended for the addressee(s) and may contain
> > confidential and legally privileged information.  We do not waive
> > confidentiality or privilege by mistransmission.  If you have received
> > this communication in error, any use, dissemination, printing or
> copying
> > is strictly prohibited; please destroy all electronic and paper copies
> > and notify the sender immediately.
> >
> >
> >
> > --
> > To unsubscribe, e-mail:
> <ma...@xml.apache.org>
> > For additional commands, e-mail:
> <ma...@xml.apache.org>
> >
> >
>
> --
> To unsubscribe, e-mail:   <ma...@xml.apache.org>
> For additional commands, e-mail: <ma...@xml.apache.org>

--
This communication is intended for the addressee(s) and may contain
confidential and legally privileged information.  We do not waive
confidentiality or privilege by mistransmission.  If you have received this
communication in error, any use, dissemination, printing or copying is
strictly prohibited; please destroy all electronic and paper copies and
notify the sender immediately.



--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>


Re: SOAP - method return

Posted by Vijay Shinde <Vi...@morganstanley.com>.
Scott,

Here are the details.

I guess i need to provide the mapping in my DeploymentDescriptor.xml.

Here is my descriptor.
<dd:service xmlns:dd="http://xml.apache.org/xml-soap/deployment"
    id="urn:ldap">
     <dd:provider type="java"
              scope="Application"
              methods="getLDAP">
       <dd:java class="LDAPCall"  static="false" />
     </dd:provider>

<dd:faultListener>org.apache.soap.server.DOMFaultListener</dd:faultListener>

 <dd:mappings>
     <dd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
              xmlns:x="urn:ldap" qname="x:ldap"
              javaType="java.util.Hashtable"

java2XMLClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"

xml2JavaClassName="org.apache.soap.encoding.soapenc.HashtableSerializer"/>

  </dd:mappings>
</dd:service>

I am returning Hashtable from my method call.

I am getting following exception.

The SOAP Server says: http://localhost:8080/soap/servlet/rpcrouter
Ouch, the call failed:
  Fault Code   = SOAP-ENV:Server
  Fault String = java.lang.IllegalArgumentException: No Serializer found to
seri
alize a 'java.util.Vector$1' using encoding style
'http://schemas.xmlsoap.org/so
ap/encoding/'.

I have provide mapping for hashtable why it is throwing me error for vector
class?.
are  my mappings correct?


Vijay


Scott Nichol wrote:

> A couple of things:
>
> 1. Which line of your code is line 36 where the exception is occurring?
>
> 2. Your code should check for a SOAP Fault before doing
> getReturnValue(), e.g.
>
>  Response resp = call.invoke(url, "");
>  if (resp.generatedFault()) {
>     Fault fault = resp.getFault();
>     System.err.println("Generated fault: " + fault);
>  } else {
>     Parameter p = resp.getReturnValue();
>     Hashtable values = (Hashtable)p.getValue();
>     ...
>
> If there is a fault, I believe that getReturnValue() will return null,
> so calling it without checking for a fault could lead to an NPE.
>
> 3. Although I take it you are using Apache SOAP on the server in this
> case, it is worth pointing out that some SOAP implementations will omit
> the return value from the SOAP envelope if its value is null (e.g. this
> happens in .NET when the return is not specified as being nillable).
> Therefore, it is good practice in your client code to check that
> getReturnValue() does not itself return null.
>
> Scott Nichol
>
> ----- Original Message -----
> From: "Vijay Shinde" <Vi...@morganstanley.com>
> To: <so...@xml.apache.org>
> Sent: Thursday, January 02, 2003 11:54 AM
> Subject: SOAP - method return
>
> > Hi,
> >
> > I am doing LDAP call using soap .I want to return Hashtable from my
> > method call.
> > On my client site I am using following code to get my hashtable.
> >
> > Response resp = call.invoke(url, "");
> > Parameter p = resp.getReturnValue();
> >   Hashtable values = (Hashtable)p.getValue();
> >
> > I am getting following exception.
> >
> > The SOAP Server says:
> > http://localhost:8080/soap/servlet/rpcrouterException in t
> > hread "main" java.lang.NullPointerException
> >  at LDAP_client.main(LDAP_client.java:36)
> >
> > any help will be useful.
> >
> > Vijay
> > --
> > This communication is intended for the addressee(s) and may contain
> > confidential and legally privileged information.  We do not waive
> > confidentiality or privilege by mistransmission.  If you have received
> > this communication in error, any use, dissemination, printing or
> copying
> > is strictly prohibited; please destroy all electronic and paper copies
> > and notify the sender immediately.
> >
> >
> >
> > --
> > To unsubscribe, e-mail:
> <ma...@xml.apache.org>
> > For additional commands, e-mail:
> <ma...@xml.apache.org>
> >
> >
>
> --
> To unsubscribe, e-mail:   <ma...@xml.apache.org>
> For additional commands, e-mail: <ma...@xml.apache.org>

--
This communication is intended for the addressee(s) and may contain
confidential and legally privileged information.  We do not waive
confidentiality or privilege by mistransmission.  If you have received this
communication in error, any use, dissemination, printing or copying is
strictly prohibited; please destroy all electronic and paper copies and
notify the sender immediately.



Re: SOAP - method return

Posted by Scott Nichol <sn...@scottnichol.com>.
A couple of things:

1. Which line of your code is line 36 where the exception is occurring?

2. Your code should check for a SOAP Fault before doing
getReturnValue(), e.g.

 Response resp = call.invoke(url, "");
 if (resp.generatedFault()) {
    Fault fault = resp.getFault();
    System.err.println("Generated fault: " + fault);
 } else {
    Parameter p = resp.getReturnValue();
    Hashtable values = (Hashtable)p.getValue();
    ...

If there is a fault, I believe that getReturnValue() will return null,
so calling it without checking for a fault could lead to an NPE.

3. Although I take it you are using Apache SOAP on the server in this
case, it is worth pointing out that some SOAP implementations will omit
the return value from the SOAP envelope if its value is null (e.g. this
happens in .NET when the return is not specified as being nillable).
Therefore, it is good practice in your client code to check that
getReturnValue() does not itself return null.

Scott Nichol

----- Original Message -----
From: "Vijay Shinde" <Vi...@morganstanley.com>
To: <so...@xml.apache.org>
Sent: Thursday, January 02, 2003 11:54 AM
Subject: SOAP - method return


> Hi,
>
> I am doing LDAP call using soap .I want to return Hashtable from my
> method call.
> On my client site I am using following code to get my hashtable.
>
> Response resp = call.invoke(url, "");
> Parameter p = resp.getReturnValue();
>   Hashtable values = (Hashtable)p.getValue();
>
> I am getting following exception.
>
> The SOAP Server says:
> http://localhost:8080/soap/servlet/rpcrouterException in t
> hread "main" java.lang.NullPointerException
>  at LDAP_client.main(LDAP_client.java:36)
>
> any help will be useful.
>
> Vijay
> --
> This communication is intended for the addressee(s) and may contain
> confidential and legally privileged information.  We do not waive
> confidentiality or privilege by mistransmission.  If you have received
> this communication in error, any use, dissemination, printing or
copying
> is strictly prohibited; please destroy all electronic and paper copies
> and notify the sender immediately.
>
>
>
> --
> To unsubscribe, e-mail:
<ma...@xml.apache.org>
> For additional commands, e-mail:
<ma...@xml.apache.org>
>
>


--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>


Re: SOAP - method return

Posted by Scott Nichol <sn...@scottnichol.com>.
A couple of things:

1. Which line of your code is line 36 where the exception is occurring?

2. Your code should check for a SOAP Fault before doing
getReturnValue(), e.g.

 Response resp = call.invoke(url, "");
 if (resp.generatedFault()) {
    Fault fault = resp.getFault();
    System.err.println("Generated fault: " + fault);
 } else {
    Parameter p = resp.getReturnValue();
    Hashtable values = (Hashtable)p.getValue();
    ...

If there is a fault, I believe that getReturnValue() will return null,
so calling it without checking for a fault could lead to an NPE.

3. Although I take it you are using Apache SOAP on the server in this
case, it is worth pointing out that some SOAP implementations will omit
the return value from the SOAP envelope if its value is null (e.g. this
happens in .NET when the return is not specified as being nillable).
Therefore, it is good practice in your client code to check that
getReturnValue() does not itself return null.

Scott Nichol

----- Original Message -----
From: "Vijay Shinde" <Vi...@morganstanley.com>
To: <so...@xml.apache.org>
Sent: Thursday, January 02, 2003 11:54 AM
Subject: SOAP - method return


> Hi,
>
> I am doing LDAP call using soap .I want to return Hashtable from my
> method call.
> On my client site I am using following code to get my hashtable.
>
> Response resp = call.invoke(url, "");
> Parameter p = resp.getReturnValue();
>   Hashtable values = (Hashtable)p.getValue();
>
> I am getting following exception.
>
> The SOAP Server says:
> http://localhost:8080/soap/servlet/rpcrouterException in t
> hread "main" java.lang.NullPointerException
>  at LDAP_client.main(LDAP_client.java:36)
>
> any help will be useful.
>
> Vijay
> --
> This communication is intended for the addressee(s) and may contain
> confidential and legally privileged information.  We do not waive
> confidentiality or privilege by mistransmission.  If you have received
> this communication in error, any use, dissemination, printing or
copying
> is strictly prohibited; please destroy all electronic and paper copies
> and notify the sender immediately.
>
>
>
> --
> To unsubscribe, e-mail:
<ma...@xml.apache.org>
> For additional commands, e-mail:
<ma...@xml.apache.org>
>
>