Hi,
Do you get the classcast exception in the server side or the client
side ? if it is the client side it could be due to either the type
attribute being missing or not being namespace qualified.
If so can you pipe the requests through tcpmon and send the request
and response messages ?

On 4/18/06, Siamak Haschemi <[EMAIL PROTECTED]> wrote:
> Hello to all.
>
> I have a problem with Axis2 and XMLBeans and I think that this could be
> a bug.
>
> I have a WSDL-file with the following schemas:
>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> elementFormDefault="qualified"
>       targetNamespace="http://haschemi.org/sale/common";>
>
>       <xsd:complexType name="product-type" abstract="true">
>         <xsd:attribute name="id" type="xsd:long" />
>       </xsd:complexType>
>
>       <xsd:complexType name="milk-type">
>         <xsd:complexContent>
>           <xsd:extension base="common:product-type">
>             <xsd:attribute name="fillingQuantity" type="xsd:float" />
>           </xsd:extension>
>         </xsd:complexContent>
>       </xsd:complexType>
>
>       <xsd:element name="addProductRequest">
>         <xsd:complexType>
>           <xsd:sequence>
>             <xsd:element name="product" type="common:product-type"
> minOccurs="0" maxOccurs="unbounded" />
>           </xsd:sequence>
>         </xsd:complexType>
>       </xsd:element>
>
>       <xsd:element name="addProductResponse">
>         <xsd:complexType>
>           <xsd:sequence>
>             <xsd:element name="productId" type="xsd:long" minOccurs="0"
> maxOccurs="unbounded" />
>           </xsd:sequence>
>         </xsd:complexType>
>       </xsd:element>
>
>     </xsd:schema>
>
> I used WSDL2Java to generate the service and the xmlbean-resources. The
> xmlbean-resources are packed into a jar file and placed in the
> lib-directory of the .aar service.
>
> care
> + org
>   + haschemi
>   + ...
> + lib
> + XBeans-packaged.jar
> + META-INF
>   + services.xml
>
> The calling part is:
>
> ...
> final AddProductRequestDocument addProductRequestDocument =
> AddProductRequestDocument.Factory.newInstance();
> final AddProductRequest addProductRequest =
> addProductRequestDocument.addNewAddProductRequest();
> final ProductType productType = addProductRequest.addNewProduct();
> final MilkType milkType = (MilkType) productType.changeType(MilkType.type);
> milkType.setFillingQuantity(44.44f);
> ...
>
> In the generated Skeleton I put the following lines:
>
> public org.haschemi.sale.common.AddProductResponseDocument addProduct(
>             org.haschemi.sale.common.AddProductRequestDocument param0) {
>         final AddProductRequest addProductRequest =
> param0.getAddProductRequest();
>
>         for (ProductType productType :
> addProductRequest.getProductArray()) {
>             final MilkType milkType = (MilkType)
> productType.changeType(MilkType.type);
>         }
>     }
>
> I get a exception of the changeType call:
> java.lang.ClassCastException: org.haschemi.sale.common.impl.ProductTypeImpl
>
> It seems that the changeType method returns the abstract basetype
> (product-type) instead of the derived one (milk-type).
>
>
> BUT the strangest thing is that is works outside of axis2. I wrote a
> litte Main-Class and I call the Skeleton manually and everything goes ok.
>
> So I think that this can be a Axis2 Bug. Something with the classloader?
>
>
>
> I'm sorry for the long e-mail.
>
> Thanks a lot,
>
> Siamak Haschemi
>
>
>
>
>
>
>


--
Ajith Ranabahu

Reply via email to