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: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> 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: '[EMAIL PROTECTED]' 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/I SackTruck 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:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>