Does anybody have a working example for passing array of complex type to a 
service? I have no problem of getting a array of complex type back. The 
following is the details of my program.

I got error: No such operation 'returnOrder' when trying passing a 
arrayOfObject to the service.
-- The service looks like:
     package samples.userguide.example5;
     public class BeanService
     {
          public Order[] returnOrder(Order [] order) {

          for (int i = 0; i < order.length; i++) {
                  order[i].setCustomerName(i +"_"+order[i].getCustomerName());
          }
          return order;
       }
    }
-- the deploy.wsdd looks like:
   <deployment xmlns="http://xml.apache.org/axis/wsdd/"; 
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java";>
    <service name="OrderProcessor" provider="java:RPC">
        <parameter name="className" 
value="samples.userguide.example5.BeanService"/>
        <parameter name="allowedMethods" value="*"/>
        <beanMapping qname="myNS:Order" xmlns:myNS="urn:BeanService" 
languageSpecificType="java:samples.userguide.example5.Order"/>
  
    <arrayMapping qname="ns:ArrayOfOrder" xmlns:ns="urn:BeanService"
               languageSpecificType="java:samples.userguide.example5.Order[]"
      innerType="ns2:Order" xmlns:ns2="urn:BeanService"
             encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  
  </service>
</deployment>
-- the client code:
        Service  service = new Service();
        Call     call    = (Call) service.createCall();
        QName    qnOrder          = new QName( "urn:BeanService", "Order" );
        QName    qnOrderArray     = new QName( "urn:BeanService", 
"ArrayOfOrder" );

        call.registerTypeMapping(Order.class, qnOrder,
                      new 
org.apache.axis.encoding.ser.BeanSerializerFactory(Order.class, qnOrder),
                      new 
org.apache.axis.encoding.ser.BeanDeserializerFactory(Order.class, qnOrder));
        call.registerTypeMapping(Order[].class, qnOrderArray,
                   new org.apache.axis.encoding.ser.ArraySerializerFactory(),
       new org.apache.axis.encoding.ser.ArrayDeserializerFactory());
        String result = "";
        Order [] m_order;
        try {
            call.setTargetEndpointAddress( new 
java.net.URL("http://localhost:8080/axis/services/OrderProcessor";) );
            call.addParameter( "arg1", qnOrderArray, ParameterMode.IN );
            call.setOperationName( new QName("OrderProcessor", "returnOrder") );
           call.setReturnType( qnOrderArray );
            m_order = (Order []) call.invoke( new Object[] { order });
            ......
Thanks
Teresa




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to