Oh, yeah, you can use the tools to generate the client-side stub, too! WSDL2Java is the tool that does it. You get a source module out of that tool, called SomethingServiceLocator.java.
The programming model in the app is something like locator= new SomethingServiceLocator(); svc= locator.getSomethingServiceSoap(); svc.Method1(param1...); -----Original Message----- From: Walter Parton [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 08, 2005 8:26 PM To: [email protected] Subject: RE: Problems sending String parameters with Axis 1.2 RC 3 client to .Net 1.1 service Sorry for the confusion then. I guess I misunderstood how to use the axis client in that I thought that clients had be written with low level api calls. Dumb question, but which tools in axis do I need to use to have it auto generate the message? WSDL? I thought that was only for service not a client? Does Axis generate the java class? Thanks Walter -----Original Message----- From: Dino Chiesa [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 08, 2005 3:13 PM To: [email protected] Subject: RE: Problems sending String parameters with Axis 1.2 RC 3 client to .Net 1.1 service > We have to set up the service in .net as it calls a dll on a windows machine - Ok, I get that part... > hence using the "generic" soap interface which i guess is not so interoperable after all. I don't get why the use of .NET implies that you should or must use the generic (low level) soap programming interfaces. > the client code is based on examples in the developer guide to axis 1.2 so it should work fine True, but it sure is ugly to figure out. The tools can generate all that for you. If you are really in love with the low-level API, maybe what you can do is use the WSDL2Java to create a client stub (doc/lit), snatch the XML on the wire with TCPMonitor, then re-work your Java AXIS (low level) client to produce the message you see. -D -----Original Message----- From: Walter Parton [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 08, 2005 5:55 PM To: [email protected] Subject: RE: Problems sending String parameters with Axis 1.2 RC 3 client to .Net 1.1 service Well the client code is based on examples in the developer guide to axis 1.2 so it should work fine . Again the connection works just that the parameters are not picked up by the .net service. We have to set up the service in .net as it calls a dll on a windows machine - hence using the "generic" soap interface which i guess is not so interoperable after all. Walter -----Original Message----- From: Dino Chiesa [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 08, 2005 2:21 PM To: [email protected] Subject: RE: Problems sending String parameters with Axis 1.2 RC 3 client to .Net 1.1 service The programming model in that client code is ... Really obtuse. Can you not do a Wsdl2Java and create a client-side stub, and get something more like: Stub mystub= new Stub(); mystub.Method1(param1, param2...) ; -D -----Original Message----- From: Walter Parton [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 08, 2005 3:46 PM To: [email protected] Subject: Problems sending String parameters with Axis 1.2 RC 3 client to .Net 1.1 service Hello, We have an Axis java client (Axis 1.2 RC3) that is communicating to a .Net web service correctly, however, the rpc encoded variable problem is cropping up and causing the .NET service to not correctly pull in the passed strings. We know we need to turn off the rpc encoding so that the Axis client will send the parameters as document/literal, problem is we don't know how to turn it off in the java client code. We suspect that with RC 3 it is doable (according to the release message it accomodates literal/document and .net). So our plead for help is - Which property do we set, or which flag do we toggle to turn off rpc and turn on literal/document? Any assistance would be of great help! I included the client code below. Thanks Walter Parton Documentum Consulting // Decompiled by DJ v3.5.5.77 Copyright 2003 Atanas Neshkov Date: 2/1/2005 7:58:00 PM // Home Page : <http://members.fortunecity.com/neshkov/dj.html> - Check often for new version! // Decompiler options: packimports(3) // Source File Name: CalcClient.java package samples.userguide.example2; import java.io.PrintStream; import java.net.URL; import javax.xml.namespace.*; import javax.xml.rpc.ParameterMode; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.TypeMappingImpl; import org.apache.axis.encoding.XMLType; import org.apache.axis.encoding.XMLType; import org.apache.axis.utils.Options; import org.apache.axis.encoding.*; public class rm_call { public rm_call() { } public static void main(String args[]) throws Exception { Options options = new Options(args); String endpoint = "<http://edmw04/RM/SMUDRecord.asmx>"; String action = "<http://rm.com/webservices/Synchronize>"; //SOAPMappingREgistry smr = new SOAPMappingRegistry(); //StringDeserializer sd = new StringDeserializer(); args = options.getRemainingArgs(); if(args == null || args.length != 6) { //String method = args[0]; //if(!method.equals("add") && !method.equals("subtract")) //{ System.err.println("Usage: rm_call prefix fileLevel subject author docbase documentId"); return; } else { String strPrefix = new String(args[0]) ; String strFileLevel = new String(args[1]); String strSubject = new String(args[2]); String strAuthor = new String(args[3]); String strDocbase = new String(args[4]); String strDocId = new String(args[5]); String method = "Synchronize"; Service service = new Service(); Call call = (Call)service.createCall(); //set the target to the RMSynchronization service call.setTargetEndpointAddress(new URL(endpoint)); call.setOperationName(method); TypeMappingImpl.dotnet_soapenc_bugfix = true; call.addParameter("prefix", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter("fileLevel", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter("subject", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter("author", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter("docbase", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter("documentId", XMLType.XSD_STRING, ParameterMode.IN); /* call.addParameter("prefix", XMLType.QNAME_LITERAL_ITEM, ParameterMode.IN); call.addParameter("fileLevel", XMLType.QNAME_LITERAL_ITEM, ParameterMode.IN); call.addParameter("subject", XMLType.QNAME_LITERAL_ITEM, ParameterMode.IN); call.addParameter("author", XMLType.QNAME_LITERAL_ITEM, ParameterMode.IN); call.addParameter("docbase", XMLType.QNAME_LITERAL_ITEM, ParameterMode.IN); call.addParameter("documentId", XMLType.QNAME_LITERAL_ITEM, ParameterMode.IN); */ //String strEncode = call.getEncodingStyle(); //call.SEND_TYPE_ATTR = false; //call.addParameter("", XMLType.XSD_STRING, ParameterMode.IN); call.setReturnType(XMLType.XSD_STRING); call.setUseSOAPAction(true); call.setSOAPActionURI(action); //call.setProperty(Call.OPERATION_STYLE_PROPERTY,""); //call.setProperty("javax.xml.rpc.encodingstyle.namespace.uri",""); //call.setEncodingStyle("<http://schemas.xmlsoap.org/soap/encoding/>"); // System.out.println("encode = " + strEncode); String ret = "" ; //String ret = (String)call.invoke(new Object[] {strPrefix,strFileLevel,strSubject,strAuthor,strDocbase,strDocId}); try { ret = (String)call.invoke(new Object[] {strPrefix,strFileLevel,strSubject,strAuthor,strDocbase,strDocId}); } catch (Exception e) { System.out.println("Got result : " + ret + e.getMessage()); } System.out.println("Got result : " + ret ); return; } } }
