Hi Scott,
 
<beanMapping > tag come before the service terminating tag i.e. </service>
 
Like this;
 
 <service >
     ......
    .................     
    <beanMapping qname="ValidateFields:User"  languageSpecificType="java:example2.User"/>
</service>
 
 
Regards,
Dimuthu.
 
----- Original Message -----
From: "scott" <[EMAIL PROTECTED]>
Sent: Monday, September 08, 2003 2:13 PM
Subject: need help with SAXException: Deserializing parameter

> Trying to get my WSDD service going, using BidBuy as an example. To pass data
> between client/server I created a "User" class that holds some data.
>
> Now, when sending data from client to server, this is what I see:
>
> POST /axis/services/ValidateFields HTTP/1.0
> Content-Type: text/xml; charset=utf-8
> Accept: application/soap+xml, application/dime, multipart/related, text/*
> User-Agent: Axis/1.1
> Host: localhost
> Cache-Control: no-cache
> Pragma: no-cache
> SOAPAction: ""
>
> <?xml version="1.0" encoding="UTF-8"?>
>    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>       <soapenv:Body> 
>          <validateUserData
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">  
>             <data href=""/> 
>          </validateUserData> 
>          <multiRef id="id0" soapenc:root="0"
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xsi:type="ns1:User" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:ns1="http://localhost/axis/services/ValidateFields">  
>             <name xsi:type="xsd:string">smaclure</name>  
>             <phoneNumber xsi:type="xsd:string">02076545987</phoneNumber> 
>          </multiRef>
>       </soapenv:Body>
>    </soapenv:Envelope>
>
> returns:
>
> HTTP/1.1 500 Internal Server Error
> Content-Type: text/xml; charset=utf-8
> Date: Fri, 05 Sep 2003 15:11:30 GMT
> Server: Apache Coyote/1.0
> Connection: close
>
> <?xml version="1.0" encoding="UTF-8"?>
>    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>       <soapenv:Body> 
>          <soapenv:Fault>  
>             <faultcode>soapenv:Server.userException</faultcode>  
>             <faultstring>org.xml.sax.SAXException: Deserializing parameter
> &apos;data&apos;:  could not find deserializer for type
> {
http://localhost/axis/services/ValidateFields}User</faultstring>  
>             <detail/> 
>          </soapenv:Fault>
>       </soapenv:Body>
>    </soapenv:Envelope>
>
> At the moment, my deploy.wsdd looks like this;
>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/"
> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
> xmlns:ValidateFields="http://localhost:8080/axis/services/ValidateFields"
> xmlns:reg="http://www.soapinterop.org/Registry">
>   <service name="ValidateFields" provider="java:RPC">
>     <namespace>
http://localhost:8080/axis/services/ValidateFields</namespace>
>     <parameter name="className" value="example2.ValidateFields"/>
>     <parameter name="allowedMethods" value="*"/>
>   </service>
>   <beanMapping qname="ValidateFields:User"
> languageSpecificType="java:example2.User"/>
> </deployment>
>
> I'm a bit confused as I searched this list and found a few related queries, but
> their deployment syntax is different from the 'bidbuy' example.
>
> So, I need a bit of a push in the right direction - am I doing the right thing?
> My client code looks like this:
>
> /*
> Scott's test
>  */
>
> package example2 ;
>
> import org.apache.axis.client.Call;
> import org.apache.axis.client.Service;
> import org.apache.axis.encoding.XMLType;
> import org.apache.axis.encoding.ser.BeanDeserializerFactory;
> import org.apache.axis.encoding.ser.BeanSerializerFactory;
>
> import javax.xml.namespace.QName;
> import javax.xml.rpc.ParameterMode;
>
> import java.util.Map;
>
> public class ValidateFieldsClient
> {
>    public static void main(String [] args) throws Exception {
>
>
>       
file://String endpoint = "http://localhost:8080/axis/ValidateFields.jws";
> String endpoint = "
http://localhost/axis/services/ValidateFields";
>       
>        String name = "Scott";
>       
>
>        Service  service = new Service();
>        Call     call    = (Call) service.createCall();
>
> // test # 1
>        call.setTargetEndpointAddress( new java.net.URL(endpoint) );
>        call.setOperationName( "helloTest" );
>        call.addParameter( "name", XMLType.XSD_STRING, ParameterMode.IN );
>        call.setReturnType( XMLType.XSD_STRING );
>
> String ret = "";
> try
> {
>        ret = (String) call.invoke( new Object [] { name });
> }
> catch(Exception e)
> {
> e.printStackTrace();
> }
>        System.out.println("Got result : " + ret);
>       
>        // test #2
>       
> // register the User class
> QName uqn = new QName(endpoint, "User");
> Class cls = User.class;
> call.registerTypeMapping(cls, uqn, BeanSerializerFactory.class,
> BeanDeserializerFactory.class);
>       
>        call.removeAllParameters(); // reset for next call
> call.setOperationName( "validateUserData" );
> call.addParameter( "data", uqn, ParameterMode.IN );
>    call.setReturnType( XMLType.XSD_ANY ); // not sure about this
>   
>    User user = new User("smaclure", "02076545987");
>
> Map usrData = null;
> try
> {
> usrData = (Map)call.invoke( new Object [] { user });
> }
> catch(Exception e)
> {
> e.printStackTrace();
> }
> System.out.println("Got userinfo : " + usrData.toString());
>    }
> }
>
> (test #1 works fine)
>
> thanks,
> Scott
>
>

Reply via email to