Hi,
Just started
learning WS and got this problem with java interfaces used in beans. But before
I dig into the details, what is the difference between
ArrayOf_xsd_anyType[] and anyType[] in a SOAP response message? It seems to
be the only difference I can see, but the former is not working. Here's the
details:
I have a service
class E where there's a getA() methods that returns an A object. A has a getter
getBees() that returns B[], where B is just an interface. The actual classes
will be put in the array are C and D which both implement B. The problem I'm
having is with this getBees() method in A. The signature is:
public B[]
getBees();
and I have a filed
defined as:
B[]
bees;
I'm using Axis 1.3.
If I run java2wsdl and then wsdl2java to generate server bindings with
--skeletoDeploy set to true, everything works, except it redefined both bees and
getBees() to Object[], so the client needs to cast which is not that big of a
problem. But if I use my own code for the server side, where all B[] are
still intact, I'll get ArrayStoreException on client side when axis is
deserializing. If I manually change all B[] to Object[], my code would work too
with the same deployment descriptor. Using TCP monitor I noticed the only
difference in the server response soap messages is that for field bees, one is
returning ArrayOf_xsd_anyType[], and the other is anyType[], and only anyType[]
would work on client.
Any idea what I'm
doing wrong? I'd really like to be able to use my original code without having
to change them to all Object[].
Thanks,
Yong
