axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Krishnakumar Balachandar <krishnakum...@in.ibm.com>
Subject Unable to call web service that has Complex type with Arrays.
Date Wed, 25 Feb 2004 14:27:30 GMT
Hi all,

I have a web service that takes a complex type with arrays as parameter. 
On invoking this service from the client 
i get 

AxisFault
 faultCode: 
{http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: java.io.IOException: No serializer found for class 
com.ibm.wswbia.jdbc.Customer in registry 
org.apache.axis.encoding.TypeMappingImpl@2dd68cd0
 faultActor: 
 faultNode: 
 faultDetail: 
        {http://xml.apache.org/axis/}stackTrace: java.io.IOException: No 
serializer found for class com.ibm.wswbia.jdbc.Customer in registry 
org.apache.axis.encoding.TypeMappingImpl@2dd68cd0

I am using stle = "wrapped". I am able to make this work in RPC style but 
not warpped.

i have gone through similar errors on the list and have tried adding 
TypeMapping to WSDD but nothing works. Any help 
appreciated as i am stuck on this for 2 days.

I have listed the Class & WSDD files

Web Service
===========
public Customer echo(Customer in )
{
        return in;
}

Customer
========

public class Customer {
 
        private int cust_id;
        private String cust_fname;
        private String cust_lname;
        private Address[] address = new Address[1];
 
        public Address getAddress(int i) {
        return address[i];
        }
        public String getCust_fname() {
                return cust_fname;
        }
        public int getCust_id() {
                return cust_id;
        }
        public String getCust_lname() {
                return cust_lname;
        }
        public void setAddress(int i, Address address) {
        this.address[i] = address;
        }
        public void setCust_fname(String cust_fname) {
                this.cust_fname = cust_fname;
        }
        public void setCust_id(int cust_id) {
                this.cust_id = cust_id;
        }
        public void setCust_lname(String cust_lname) {
                this.cust_lname = cust_lname;
        }

}

and 

Address has

public class Address {
 
        private int addr_id;
        private int cust_id;
        private String street;
} ..  with getter & setter

WSDD file
========

<deployment
    xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  <service name="JDBC" provider="java:RPC" style="wrapped">
       <parameter name="className" 
value="com.ibm.wswbia.jdbc.JDBCService"/>
       <parameter name="allowedMethods" value="*"/>
  </service>
  <beanMapping qname="my:Customer" xmlns:my="urn:JDBC" 
languageSpecificType="java:com.ibm.wswbia.jdbc.Customer"/>
  <beanMapping qname="my:Address" xmlns:my="urn:JDBC" 
languageSpecificType="java:com.ibm.wswbia.jdbc.Address"/>
 
   <typeMapping
 deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        qname="my:Address"
        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
        type="java:com.ibm.wswbia.jdbc.Customer"
        xmlns:my="urn:JDBC"/>
 
        <typeMapping
 deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        qname="my:ArrayOfAddress"
        serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
        type="java:com.ibm.wswbia.jdbc.Address[]"
        xmlns:my="urn:JDBC"/>

</deployment>

Regards
Krishnakumar B
IBM India Software Labs, 
Adapter DDC Team, 
Golden Towers, 
Bangalore. 
Phone No: 91-80-5044130
Extn : 3130 

Mime
View raw message