Just one note here. If you require interoperability, you shouldn't use rpc/literal since .Net doesn't support it. You're better off with wrapped/literal which is "a flavour" of document/literal.
----- Original Message ----- From: "Dan Hobbs" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, February 15, 2005 11:24a Subject: rpc/literal vs document/literal, and returning a list of objects > Hello all. > > I am really struggling to know whether I am heading in the right direction > with this project, so any advice would be greatly appreciated. > > The requirement: a WS-I-compliant web service to wrap an EJB which returns a > java.util.Vector of objects. > > Firstly, I think the WS-I compliance bit means I have two choices: > rpc/literal or document/literal. I read in a mail from Anne Thomas Manes > that rpc/literal is "not recommended" but I'm not sure why. > > Secondly, the List to be returned contains a JavaBean, which itself contains > two JavaBeans, one with two double and one String property, the other with > one String property. I gather there is some issue with returning arrays, but > I don't know which message style that applies to. I control the format of > the response, however, so this can be changed. However, the fact remains > that either a set of simple arrays or a java.util.Collection must be > returned somehow. > > The method exposed as a web service takes three parameters (Short, String, > String) and I'm unclear on whether these three need to be kept separate as > they are, or grouped together into one class (e.g. > WebsrvcOrderInLmsImportParams). > > At this point I am thoroughly confused by reading what seems to be > conflicting advice. If anyone can see straight away which route I should be > taking, or know of a relevant article on the web, please let me know. > > I attach my deploy.wsdd and Java client, which have been modified too many > times now and I've managed to stop the thing working altogether! > > Many thanks, > > Dan > > --------- > > Deploy.wsdd: > > <deployment xmlns="http://xml.apache.org/axis/wsdd/" > xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> > > <service name="DanWS2" provider="java:RPC"> > style="rpc" > use="literal"> > <parameter name="className" value="DanWS2"/> > <parameter name="allowedMethods" value="*"/> > > <operation name="websrvcOrderInLms" > returnQname="ns:websrvcOrderInLmsResponse" returnType="ns:java.util.List"> > <parameter qname="ns:nummer1" type="xsd:short" mode="IN"/> > <parameter qname="ns:userIntfNumb" type="xsd:string" mode="IN"/> > <parameter qname="ns:dateCrtd" type="xsd:string" mode="IN"/> > </operation> > > <beanMapping qname="ns:GrpExp" xmlns:ns="http://www.jumar-solutions.com/" > languageSpecificType="java:GrpExp"/> > <beanMapping qname="ns:StorOrdr" > xmlns:ns="http://www.jumar-solutions.com/" > languageSpecificType="java:StorOrdr"/> > <beanMapping qname="ns:OrdrStat" > xmlns:ns="http://www.jumar-solutions.com/" > languageSpecificType="java:OrdrStat"/> > > </service> > > </deployment> > > > TestClient.java: > > import org.apache.axis.client.Call; > import org.apache.axis.client.Service; > import javax.xml.namespace.QName; > import org.apache.axis.Constants; > import org.apache.axis.MessageContext; > import org.apache.axis.server.AxisServer; > import java.util.List; > > public class TestClient2 > { > public static void main(String [] args) { > MessageContext msgContext = new MessageContext(new AxisServer()); > > String endpoint = > "http://localhost:8080/axis/services/DanWS2"; > String nameSpaceUri = "http://soapinterop.org"; > String operation = "websrvcOrderInLms"; > > try { > > Service service = new Service(); > Call call = (Call) service.createCall(); > > call.setTargetEndpointAddress( new java.net.URL(endpoint) ); > call.setOperation(new QName(nameSpaceUri, "DanWS2"), operation); > > // parameters > Short nummer1 = new Short((short)1); > String userIntfNumb = "10015"; > String dateCrtd = "20041230212749000000"; > > List ret = (List) call.invoke( new Object[] { nummer1, > userIntfNumb, dateCrtd } ); > > System.out.println("Sent " + nummer1 + "," + userIntfNumb + "," + > dateCrtd + ". Got: " + ret); > } catch (Exception e) { > e.printStackTrace(); > } > } > } > > >