Thanks for answering, Scott.

I realise that this is not really the right list, but looking at the axis-user list, it appears that almost none of the queries to that list are *ever* answered (or possibly people are answering directly and not to the list).

The other methods on the interface do all work, but it's not as simple as just that complex types are a problem.  I have had no problems at all with the following service, complex types and all: http://tims.moveyourselftrailer.com.au:8000/scripts/trailer.dll/wsdl/ITrailer

Specifically, the very similar calls getTrailerHireFees() and getTrailerHireFee() both worked fine, unlike getSackTruckFees().

Should I send this request to the Axis developers' list, or is that just asking for trouble?  This looks like a bug to me, but I don't know much.  Is there anywhere else I can find help?

Regards,

Neil Brennan

-----Original Message-----
From: snicholnews@scottnichol.com [mailto:snicholnews@scottnichol.com]
Sent: Wednesday, 18 September 2002 11:40
To: soap-user@xml.apache.org
Subject: Re: RPC problems?

Typically, this list is Apache SOAP users, not Axis users, so you are less
likely to get help here.

The one thing I see from the WSDL is that the method you call is the only
one that uses a complex type.  Do the other methods on the interface work?

Scott Nichol

----- Original Message -----
From: <nbrennan@touchcorp.com>
To: <soap-user@xml.apache.org>
Sent: Tuesday, September 17, 2002 8:24 PM
Subject: FW: RPC problems?

Hi All,

I'm posting this to this group because you guys seem to be across Axis
and I didn't get a response from anyone in the axis-user group.  If this
is bad form, then I apologise in advance, but I'm really stuck here!

Any help at all would be greatly appreciated...

Regards,

Neil Brennan

-----Original Message-----
From: Neil Brennan
Sent: Tuesday, 17 September 2002 17:23
To: 'axis-user@xml.apache.org'
Subject: RPC problems?

Hi,

I'm using what I believe to be the latest version of AXIS on Linux (I
downloaded "xml-axis-rc1-bin.zip" yesterday) and trying to talk to a
Borland SOAP server with 5 different services.  I'm having very weird
problems with it.

I originally started using Apache SOAP, hand-building all the complex
classes I wanted to pass around.  Then I discovered WSDL2Java and used
it to generate all the classes I need.  I implemented one interface
fully to a single service without a hitch.  This wasn't just a 'vanilla'
service, it had plenty of beans being passed around and seemed to work
perfectly.

Then I tried to move onto the next service.

Here is the WSDL of the second service:
http://tims.moveyourselftrailer.com.au:8000/scripts/SackTruck.dll/wsdl/ISackTruck

I used this snippet of code to try and access the simplest of the ports,
just as I did previously for the other service:

      ISackTruckservice locator = new ISackTruckserviceLocator();
      ISackTruck client = locator.getISackTruckPort();
      Object fees = client.getSackTruckFees();

And got:

org.xml.sax.SAXException: operation description is missing parameter
description!
        at
org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:220)
        at
org.apache.axis.encoding.DeserializationContextImpl.startElement(Deseria
lizationContextImpl.java:883)
        at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:
158)
        at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j
ava:681)
        at
org.apache.axis.message.RPCElement.deserialize(RPCElement.java:244)
        at
org.apache.axis.message.RPCElement.getParams(RPCElement.java:268)
        at org.apache.axis.client.Call.invoke(Call.java:1862)
        at org.apache.axis.client.Call.invoke(Call.java:1768)
        at org.apache.axis.client.Call.invoke(Call.java:1306)
        at
com.touchcorp.soap.isacktruck.ISackTruckbindingStub.getSackTruckFees(ISa
ckTruckbindingStub.java:228)
        at
com.touchcorp.remote.party.ISackTruckService.getSackTruckFees(ISackTruck
Service.java:96)
        at
com.touchcorp.remote.party.ISackTruckService.main(ISackTruckService.java
:133)
[ERROR] Call - -Exception: <org.xml.sax.SAXException: operation
description is missing parameter description!>
Exception in thread "main" AxisFault
 faultCode: {http://xml.apache.org/axis/}Server.userException
 faultString: org.xml.sax.SAXException: operation description is missing
parameter description!
 faultActor: null
 faultDetail:
        stackTrace: org.xml.sax.SAXException: operation description is
missing parameter description!
        at
org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:220)
        at
org.apache.axis.encoding.DeserializationContextImpl.startElement(Deseria
lizationContextImpl.java:883)
        at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:
158)
        at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j
ava:681)
        at
org.apache.axis.message.RPCElement.deserialize(RPCElement.java:244)
        at
org.apache.axis.message.RPCElement.getParams(RPCElement.java:268)
        at org.apache.axis.client.Call.invoke(Call.java:1862)
        at org.apache.axis.client.Call.invoke(Call.java:1768)
        at org.apache.axis.client.Call.invoke(Call.java:1306)
        at
com.touchcorp.soap.isacktruck.ISackTruckbindingStub.getSackTruckFees(ISa
ckTruckbindingStub.java:228)
        at
com.touchcorp.remote.party.ISackTruckService.getSackTruckFees(ISackTruck
Service.java:96)
        at
com.touchcorp.remote.party.ISackTruckService.main(ISackTruckService.java
:133)

org.xml.sax.SAXException: operation description is missing parameter
description!
org.xml.sax.SAXException: operation description is missing parameter
description!
        at
org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:220)
        at
org.apache.axis.encoding.DeserializationContextImpl.startElement(Deseria
lizationContextImpl.java:883)
        at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:
158)
        at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j
ava:681)
        at
org.apache.axis.message.RPCElement.deserialize(RPCElement.java:244)
        at
org.apache.axis.message.RPCElement.getParams(RPCElement.java:268)
        at org.apache.axis.client.Call.invoke(Call.java:1862)
        at org.apache.axis.client.Call.invoke(Call.java:1768)
        at org.apache.axis.client.Call.invoke(Call.java:1306)
        at
com.touchcorp.soap.isacktruck.ISackTruckbindingStub.getSackTruckFees(ISa
ckTruckbindingStub.java:228)
        at
com.touchcorp.remote.party.ISackTruckService.getSackTruckFees(ISackTruck
Service.java:96)
        at
com.touchcorp.remote.party.ISackTruckService.main(ISackTruckService.java
:133)

But, if I go back and use Apache SOAP directly, everything seems to work
just fine.  I am *not* using an operation style of "rpc" when I call via
SOAP directly.  My code looks more like this:

      URL url = new URL(locator.getISackTruckPortAddress());
      String uri = "urn:uSackTruckFee";
      String method = "getSackTruckFees";
      Class type =
com.touchcorp.soap.isacktruck.TSackTruckFeeInfo.class;
      Vector args = new Vector();

      // get short version of type class name
      String typeName = type.getName();
      int index = typeName.lastIndexOf(".");
      if (index > 0)
          typeName = typeName.substring(index+1);

      // set up bean mappings
      SOAPMappingRegistry registry = new SOAPMappingRegistry();
      BeanSerializer serializer = new BeanSerializer();
      registry.mapTypes(Constants.NS_URI_SOAP_ENC, new QName(uri,
typeName), type, serializer, serializer);

      // build the call
      Call call = new Call();
      call.setSOAPMappingRegistry(registry);
      call.setTargetObjectURI(uri);
      call.setMethodName(method);
      call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
      call.setParams(args);

      // make the call
      Response response = call.invoke(url, "");

Help!

I have attached some of the relevant WSDL2Java-generated code below.
Any assistance at all would be appreciated greatly.  This is the most
common error I am seeing with AXIS, and I get it with almost every
method I try, but I am also getting many other equally strange errors to
do with serializers, out-of-range errors and other things.  One at a
time.

Regards,

Neil Brennan

------------------------------------------------------------------------
------------------------------------------------------------------------
------------

============================
from ISackTruckbindingStub.java:
============================

    public com.touchcorp.soap.isacktruck.TSackTruckFeeInfo
getSackTruckFees() throws java.rmi.RemoteException {
        if (super.cachedEndpoint == null) {
            throw new org.apache.axis.NoEndPointException();
        }
        org.apache.axis.client.Call _call = createCall();
        _call.setReturnType(new
javax.xml.namespace.QName("urn:uSackTruckFee", "TSackTruckFeeInfo"),
com.touchcorp.soap.isacktruck.TSackTruckFeeInfo.class);
        _call.setUseSOAPAction(true);

_call.setSOAPActionURI("urn:uSackTruckIntf-ISackTruck#getSackTruckFees")
;
        _call.setOperationStyle("rpc");
        _call.setOperationName(new
javax.xml.namespace.QName("urn:uSackTruckIntf-ISackTruck",
"getSackTruckFees"));

        java.lang.Object _resp = _call.invoke(new java.lang.Object[]
{});

        if (_resp instanceof java.rmi.RemoteException) {
            throw (java.rmi.RemoteException)_resp;
        }
        else {
            try {
                return (com.touchcorp.soap.isacktruck.TSackTruckFeeInfo)
_resp;
            } catch (java.lang.Exception _exception) {
                return (com.touchcorp.soap.isacktruck.TSackTruckFeeInfo)
org.apache.axis.utils.JavaUtils.convert(_resp,
com.touchcorp.soap.isacktruck.TSackTruckFeeInfo.class);
            }
        }
    }

============================
from TSackTruckFeeInfo.java:
============================

/**
 * TSackTruckFeeInfo.java
 *
 * This file was auto-generated from WSDL
 * by the Apache Axis WSDL2Java emitter.
 */

package com.touchcorp.soap.isacktruck;

public class TSackTruckFeeInfo  implements java.io.Serializable {
    private double deposit;
    private double hireFee;

    public TSackTruckFeeInfo() {
    }

    public double getDeposit() {
        return deposit;
    }

    public void setDeposit(double deposit) {
        this.deposit = deposit;
    }

    public double getHireFee() {
        return hireFee;
    }

    public void setHireFee(double hireFee) {
        this.hireFee = hireFee;
    }

    private java.lang.Object __equalsCalc = null;
    public synchronized boolean equals(java.lang.Object obj) {
        if (!(obj instanceof TSackTruckFeeInfo)) return false;
        TSackTruckFeeInfo other = (TSackTruckFeeInfo) obj;
        if (obj == null) return false;
        if (this == obj) return true;
        if (__equalsCalc != null) {
            return (__equalsCalc == obj);
        }
        __equalsCalc = obj;
        boolean _equals;
        _equals = true &&
            deposit == other.getDeposit() &&
            hireFee == other.getHireFee();
        __equalsCalc = null;
        return _equals;
    }

    private boolean __hashCodeCalc = false;
    public synchronized int hashCode() {
        if (__hashCodeCalc) {
            return 0;
        }
        __hashCodeCalc = true;
        int _hashCode = 1;
        _hashCode += new Double(getDeposit()).hashCode();
        _hashCode += new Double(getHireFee()).hashCode();
        __hashCodeCalc = false;
        return _hashCode;
    }

    // Type metadata
    private static org.apache.axis.description.TypeDesc typeDesc =
        new
org.apache.axis.description.TypeDesc(TSackTruckFeeInfo.class);

    static {
        org.apache.axis.description.FieldDesc field = new
org.apache.axis.description.ElementDesc();
        field.setFieldName("deposit");
        field.setXmlName(new javax.xml.namespace.QName("", "Deposit"));
        typeDesc.addFieldDesc(field);
        field = new org.apache.axis.description.ElementDesc();
        field.setFieldName("hireFee");
        field.setXmlName(new javax.xml.namespace.QName("", "HireFee"));
        typeDesc.addFieldDesc(field);
    };

    /**
     * Return type metadata object
     */
    public static org.apache.axis.description.TypeDesc getTypeDesc() {
        return typeDesc;
    }

    /**
     * Get Custom Serializer
     */
    public static org.apache.axis.encoding.Serializer getSerializer(
           java.lang.String mechType,
           java.lang.Class _javaType,
           javax.xml.namespace.QName _xmlType) {
        return
          new  org.apache.axis.encoding.ser.BeanSerializer(
            _javaType, _xmlType, typeDesc);
    }

    /**
     * Get Custom Deserializer
     */
    public static org.apache.axis.encoding.Deserializer getDeserializer(
           java.lang.String mechType,
           java.lang.Class _javaType,
           javax.xml.namespace.QName _xmlType) {
        return
          new  org.apache.axis.encoding.ser.BeanDeserializer(
            _javaType, _xmlType, typeDesc);
    }

}

--
To unsubscribe, e-mail:   <mailto:soap-user-unsubscribe@xml.apache.org>
For additional commands, e-mail: <mailto:soap-user-help@xml.apache.org>