FYI. In my Axis client I had the step: service.getEngine().setOption(org.apache.axis.AxisEngine.PROP_SEND_XSI, new Boolean(false));
This was causing a "problem" to the Array De-serializer. So when I set the PROP_SEND_XSI to true, Array De-serializer was able to see the Qname mapped to {urn:SimpleTest}SimplePhoneBean. Looks like the PROP_SNED_XSI should be set to true for Array De-serializer to work. -Muthu > -----Original Message----- > From: Ramaswamy, Muthu > Sent: Monday, November 18, 2002 10:45 AM > To: '[EMAIL PROTECTED]' > Subject: Help with De-serilization Problem > > Has anyone been able to de-serialize a java bean on the server side that > contains List as one of its member? > > Is this a bug? Appreciate any input related to this matter. > > I did post question to the Axis user list but I didn't get any favorable > reply. > > Thanks., > > -----Original Message----- > From: Ramaswamy, Muthu [mailto:[EMAIL PROTECTED]] > Sent: Sunday, November 17, 2002 2:21 PM > To: '[EMAIL PROTECTED]' > Subject: Help with List De-serializer problem. > > > Hi All- > > When the List elements are referenced in the Java Bean, I get the > ClassCastException in Beta 3 release. So I downloaded 1.0 release build > hoping it would > resolve the issue. > > Now I get: > > <faultstring>org.xml.sax.SAXException: > SimpleDeserializer encountered a child element, which is NOT expected, > in something it was trying to deserialize.</faultstring> > > Overview > ======= > Client calls the echoBean method that takes a simple java bean containing > list as parameter. > The echoBean methods then prints the content of the java bean. > When the method refers the List element, encounters ClassCastException. > > The method works when I execute from a a java client. > > Following are the sample codes related to service, 2 of the java beans, > axis > client rpc call and wsdd entry. > > (1) SimpleTest Service: > ================= > package samples.userguide.myexample5; > > import java.util.ArrayList; > import java.util.List; > > public class SimpleTest { > > public SimpleTest() { > } > > public SimpleTestBean getBean() > { > SimpleTestBean myBean = new SimpleTestBean(); > myBean.setPhones(makeBeanList()); > return myBean; > } > > public void echoBean(SimpleTestBean stb) > { > System.out.println("name is" + stb.getName()); //prints okay > System.out.println("place is" + stb.getPlace()); //prints okay > List myPhoneList = stb.getPhones(); > > for (int i=0; i<myPhoneList.size(); i++) > { > SimplePhoneBean spb = (SimplePhoneBean) myPhoneList.get(i); > //Throws ClassCastException ????? > System.out.println("Printing Phone List"); > System.out.println(spb.getPhoneType() + ":" + spb.getPhoneNum()); > } > > } > > private ArrayList makeBeanList() > { > ArrayList myArr = new ArrayList(); > myArr.add(new SimplePhoneBean("Home", "123 456 7890")); > myArr.add(new SimplePhoneBean("Work", "789 012 3456")); > myArr.add(new SimplePhoneBean("Cell", "345 012 3456")); > return myArr; > } > > public static void main(String[] args) { > SimpleTest simpleTest1 = new SimpleTest(); > > SimpleTestBean stb = simpleTest1.getBean(); > stb.setPhones(simpleTest1.makeBeanList()); > simpleTest1.echoBean(stb); > } > > } > > (2) SimpleTextBean java bean code > ========================== > package samples.userguide.myexample5; > > import java.util.ArrayList; > import java.util.List; > > public class SimpleTestBean { > > private String name; > private String place; > private List phones; > > public SimpleTestBean() { > name = "Your Name"; > place = "Your Place"; > } > > public void setName(String name) > { > this.name = name; > } > > public String getName() > { > return this.name; > } > > public void setPlace(String place) > { > this.place = place; > } > > public String getPlace() > { > return this.place; > } > > public List getPhones() > { > return this.phones; > } > > public void setPhones(List phones) > { > this.phones = phones; > } > > } > > (3) SimplePhoneBean java bean code > =========================== > package samples.userguide.myexample5; > > public class SimplePhoneBean { > > private String phoneType; > private String phoneNum; > > public SimplePhoneBean() > { > } > > public SimplePhoneBean(String phoneType, String phoneNum) > { > this.phoneType = phoneType; > this.phoneNum = phoneNum; > } > > public void setPhoneType(String phoneType) > { > this.phoneType = phoneType; > } > > public String getPhoneType() > { > return this.phoneType; > } > > public void setPhoneNum(String phoneNum) > { > this.phoneNum = phoneNum; > } > > public String getPhoneNum() > { > return this.phoneNum; > } > } > > (4) WSDD file > ========== > <service name="SimpleTest" provider="java:RPC"> > <parameter name="sendMultiRefs" value="false"/> > <parameter name="sendXsiTypes" value="false"/> > <parameter name="className" > value="samples.userguide.myexample5.SimpleTest"/> > <parameter name="allowedMethods" value="*"/> > <beanMapping > languageSpecificType="java:samples.userguide.myexample5.SimplePhoneBean" > qname="ns1:SimplePhoneBean" xmlns:ns1="urn:SimpleTest"/> > <beanMapping > languageSpecificType="java:samples.userguide.myexample5.SimpleTestBean" > qname="ns2:SimpleTestBean" xmlns:ns2="urn:SimpleTest"/> > </service> > > (5) Axis Client rpc call > ================= > <?xml version="1.0" encoding="UTF-8"?> > <soapenv:Envelope > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > 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" > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> > <soapenv:Body> > <ns1:echoBean xmlns:ns1="SimpleTest"> > <SimpleTestBean> > <name>Your Name</name> > <phones SOAP-ENC:arrayType="xsd:any[3]"> > <item> > <phoneType>Home</phoneType> > <phoneNum>123 456 7890</phoneNum> > </item> > <item> > <phoneType>Work</phoneType> > <phoneNum>789 012 3456</phoneNum> > </item> > <item> > <phoneType>Cell</phoneType> > <phoneNum>345 012 3456</phoneNum> > </item> > </phones> > <place>Your Place</place> > </SimpleTestBean> > </ns1:echoBean> > </soapenv:Body> > </soapenv:Envelope> > > (6) Error Stack > =========== > java.lang.ClassCastException: > weblogic.apache.xerces.dom.DeferredElementNSImpl > java.lang.ClassCastException: > weblogic.apache.xerces.dom.DeferredElementNSImpl > at > samples.userguide.myexample5.SimpleTest.echoBean(SimpleTest.java:42) > at java.lang.reflect.Method.invoke(Native Method) > at > org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider. > ava:308) > > > Any help is grealty appreciated. > > Thanks., > > -Muthu > > > >