Did you use SOAPMappingRegistry to set the map types in your client code,
before invoking the call?



                                                                                       
          
                    "Adam Lipscombe"                                                   
          
                    <[EMAIL PROTECTED]        To:     <[EMAIL PROTECTED]>      
          
                    ess.co.uk>                 cc:                                     
          
                                               Subject:     Problems serializing a 
vector of     
                    07/13/2001 11:36 AM        user defined classes with 
BeanSerializer          
                    Please respond to                                                  
          
                    soap-user                                                          
          
                                                                                       
          
                                                                                       
          



Folks,


Apologies if this is a well know question - I am a relative newbie to SOAP.


I need to pass a Vector of types via SOAP.
My understanding is that provided the the types conform the JavaBean specs
I
should be able to use the Bean Serializer...


The Type in the Vector is:
public class  OrganisationListMemberModel
              implements    Serializable
{
  private OrganisationName  organisationName;


  public OrganisationListMemberModel(OrganisationName  organisationName)
  {
    this.organisationName = organisationName;
    return;
  }
  public OrganisationListMemberModel()
  {
    return;
  }

  public OrganisationName getOrganisationName()
  {
    return organisationName;
  }

  public void setOrganisationName(OrganisationName organisationName)
  {
    this.organisationName = organisationName;
    return;
  }
}


The OrganisationName type is:

public class OrganisationName
       implements java.io.Serializable
{
  private String value;

  public OrganisationName(String value) throws TypeException
  {
      this.value = value;
      return;
  }
  public OrganisationName()
  {
      return;
  }


  public String getValue()
  {
    return value;
  }
  public void setValue(String value)
  {
    this.value = value
    return;
  }
}

The deployment descriptor is:

isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment";
             id="urn:OrganisationListFetcher">
  <isd:provider type="java"
                scope="Application"
                methods="allElements">
    <isd:java
class
="uk.co.landmark.contactmanager.server.organisation.soapservice.Organis
ationListSoapService" static="false"/>
  </isd:provider>


<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListene

r>

  <isd:mappings>
    <isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
             xmlns:x="urn:ContactManager"
qname="x:OrganisationListMemberModel"

javaType
="uk.co.landmark.contactmanager.common.model.OrganisationListMemberM
odel"

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

xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
  </isd:mappings>
</isd:service>




All is well if the OrganisationListMemberModel class contains a native
String instead of an OrganisationName.
However when I use OrganisationName I get the following error:


SOAP-ENV:Server, message = java.lang.IllegalArgumentException: No
Serializer
found to serialize a
'uk.co.landmark.contactmanager.common.types.OrganisationName' using
encoding
style 'http://schemas.xmlsoap.org/soap/encoding/'.



It looks to me that the Vector and OrganisationListMemberModel classes are
being handled OK, but the OrganisationName class is not.


Any ideas why not?


Thanks in advance - Adam







Reply via email to