I am running into some problems returning multiple arrays and multiple multidimentional arrays. I am using SOAP 2.2 and Xerces 1.4.2. The provider (totally moched up so don't laugh at me) code fragment below compiles, runs and appears to responde ok: >>>> java.util.Vector params = new java.util.Vector(); params.add(new Parameter("Customers_Customer_CustomerID", String[].class, new String[] {"1", "2"}, Constants.NS_URI_SOAP_ENC)); params.add(new Parameter("Customers_Customer_ContactTitle", String[].class, new String[] {"CEO", "President"}, Constants.NS_URI_SOAP_ENC)); params.add(new Parameter("Customers_Customer_Country",String[].class, new String[] {"US", "DE"}, Constants.NS_URI_SOAP_ENC)); params.add(new Parameter("Customers_Customer_Addresses_Address_Label", String[][].class, new String[][] {new String[] {"home", "office"}, new String[] {"home", "batcave"}}, Constants.NS_URI_SOAP_ENC)); params.add(new Parameter("Customers_Customer_Addresses_Address_Street", String[][].class, new String[][] {new String[] {"12345 Fake St.", "54321 Saint Fake Ln."}, new String[] {"10100 Binary Rd.", "1 Dark Road"}}, Constants.NS_URI_SOAP_ENC)); params.add(new Parameter("Customers_Customer_Addresses_Address_City", String[][].class, new String[][] {new String[] {"Springfield", "Shelbyville"}, new String[] {"Komputar", "Ubertown"}}, Constants.NS_URI_SOAP_ENC)); params.add(new Parameter("Customers_Customer_Addresses_Address_State", String[][].class, new String[][] {new String[] {"IL", "IL"}, new String[] {"MU", "MU"}}, Constants.NS_URI_SOAP_ENC)); params.add(new Parameter("Customers_Customer_Addresses_Address_Zip", String[][].class, new String[][] {new String[] {"86213", "86321"}, new String[] {"HFD234", "HFD567"}}, Constants.NS_URI_SOAP_ENC)); params.add(new Parameter("Customers_Customer_Age", String[].class, new String[] {"45", "35"}, Constants.NS_URI_SOAP_ENC)); try { Response resp = new Response(m_TargetObjectURI, // URI m_MethodName, // Method new Parameter("Result", Boolean.class, new Boolean(true), Constants.NS_URI_SOAP_ENC), // ReturnValue params, // Params null, // Header Constants.NS_URI_SOAP_ENC, // encoding responseContext); // response soapcontext - not supported yet Envelope env = resp.buildEnvelope(); StringWriter sw = new StringWriter(); env.marshall(sw, m_Call.getSOAPMappingRegistry(), responseContext); responseContext.setRootPart(sw.toString(), Constants.HEADERVAL_CONTENT_TYPE_UTF8); } catch (Exception e) <<<< With the test client code below: >>>> Call call = new Call(); call.setTargetObjectURI("urn:eightball-simple-request"); call.setMethodName("fortune"); Response resp = call.invoke( new java.net.URL("http://localhost:8080/soap/servlet/rpcrouter"), "urn:eightball-simple-request"); if (resp.generatedFault()) { Fault fault = resp.getFault(); System.out.println(fault.toString()); fail(fault.toString()); } else { Parameter ret = resp.getReturnValue(); System.out.println(ret.getValue().toString()); } I get the following evelopes: >>>> <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <ns1:fortune xmlns:ns1="urn:eightball-simple-request"> </ns1:fortune> </SOAP-ENV:Body> </SOAP-ENV:Envelope> <<<< >>>> <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <ns1:fortuneResponse xmlns:ns1="urn:eightball-simple-request" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <Result xsi:type="xsd:boolean">true</Result> <Customers_Customer_CustomerID xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:Array" ns2:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">1</item> <item xsi:type="xsd:string">2</item> </Customers_Customer_CustomerID> <Customers_Customer_ContactTitle xmlns:ns3="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns3:Array" ns3:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">CEO</item> <item xsi:type="xsd:string">President</item> </Customers_Customer_ContactTitle> <Customers_Customer_Country xmlns:ns4="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns4:Array" ns4:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">US</item> <item xsi:type="xsd:string">DE</item> </Customers_Customer_Country> <Customers_Customer_Addresses_Address_Label xmlns:ns5="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns5:Array" ns5:arrayType="ns5:Array[2]"> <item xsi:type="ns5:Array" ns5:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">home</item> <item xsi:type="xsd:string">office</item> </item> <item xsi:type="ns5:Array" ns5:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">home</item> <item xsi:type="xsd:string">batcave</item> </item> </Customers_Customer_Addresses_Address_Label> <Customers_Customer_Addresses_Address_Street xmlns:ns6="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns6:Array" ns6:arrayType="ns6:Array[2]"> <item xsi:type="ns6:Array" ns6:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">12345 Fake St.</item> <item xsi:type="xsd:string">54321 Saint Fake Ln.</item> </item> <item xsi:type="ns6:Array" ns6:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">10100 Binary Rd.</item> <item xsi:type="xsd:string">1 Dark Road</item> </item> </Customers_Customer_Addresses_Address_Street> <Customers_Customer_Addresses_Address_City xmlns:ns7="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns7:Array" ns7:arrayType="ns7:Array[2]"> <item xsi:type="ns7:Array" ns7:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">Springfield</item> <item xsi:type="xsd:string">Shelbyville</item> </item> <item xsi:type="ns7:Array" ns7:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">Komputar</item> <item xsi:type="xsd:string">Ubertown</item> </item> </Customers_Customer_Addresses_Address_City> <Customers_Customer_Addresses_Address_State xmlns:ns8="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns8:Array" ns8:arrayType="ns8:Array[2]"> <item xsi:type="ns8:Array" ns8:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">IL</item> <item xsi:type="xsd:string">IL</item> </item> <item xsi:type="ns8:Array" ns8:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">MU</item> <item xsi:type="xsd:string">MU</item> </item> </Customers_Customer_Addresses_Address_State> <Customers_Customer_Addresses_Address_Zip xmlns:ns9="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns9:Array" ns9:arrayType="ns9:Array[2]"> <item xsi:type="ns9:Array" ns9:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">86213</item> <item xsi:type="xsd:string">86321</item> </item> <item xsi:type="ns9:Array" ns9:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">HFD234</item> <item xsi:type="xsd:string">HFD567</item> </item> </Customers_Customer_Addresses_Address_Zip> <Customers_Customer_Age xmlns:ns10="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns10:Array" ns10:arrayType="xsd:string[2]"> <item xsi:type="xsd:string">45</item> <item xsi:type="xsd:string">35</item> </Customers_Customer_Age> </ns1:fortuneResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> <<<< Unforunatly I get this exception on the client side: >>>> .java.lang.NullPointerException at org.apache.crimson.tree.ElementNode.getAttributeNodeNS(ElementNode.java:417) at org.apache.soap.util.xml.DOMUtils.getAttributeNS(DOMUtils.java:105) at org.apache.soap.util.xml.DOMUtils.getNamespaceURIFromPrefix(DOMUtils.java:255) at org.apache.soap.encoding.soapenc.SoapEncUtils.getAttributeValue(SoapEncUtils.java:210) at org.apache.soap.encoding.soapenc.SoapEncUtils.getTypeQName(SoapEncUtils.java:255) at org.apache.soap.encoding.soapenc.ParameterSerializer.unmarshall(ParameterSerializer.java:173) at org.apache.soap.util.xml.XMLJavaMappingRegistry.unmarshall(XMLJavaMappingRegistry.java:260) at org.apache.soap.rpc.RPCMessage.unmarshall(RPCMessage.java:417) at org.apache.soap.rpc.RPCMessage.extractFromEnvelope(RPCMessage.java:197) at org.apache.soap.rpc.Response.extractFromEnvelope(Response.java:142) at org.apache.soap.rpc.Call.invoke(Call.java:233) ... <<<< The exception is at this line: Response resp = call.invoke(new java.net.URL("http://localhost:8080/soap/servlet/rpcrouter"), "urn:eightball-simple-request"); Does anyone have any clues as to what is causing this? Please understand that the array thing is not my idea. It comes as a requirement from someone who makes a lot more money than I do and has no clue about SOAP and XML. I would much rather be returning the actual XML DOM but we have a requirement not to. Don't ask me why, I really don't know... -Jake -- Jacob S. Barrett [EMAIL PROTECTED] http://www.amduat.net