Comments inline below between <rjb>...</rjb> Russell Butek [EMAIL PROTECTED]
"Houman Moshtagh" <[EMAIL PROTECTED]> on 05/17/2002 02:25:54 AM Please respond to [EMAIL PROTECTED] To: <[EMAIL PROTECTED]> cc: Subject: Re: WSDL2Java against a WSDL file from MS Soap Hello Russel, Below I've paste the WSDL file. I get from this WSDL file not the usual 4 files with the same context. - CreateCOM.java --> First line it extends javax.xml.rpc.Service instead of java.rmi.Remote <rjb> Why should this extend java.rmi.Remote? It is the service interface. It gets its name from the service clause in the WSDL. </rjb> - CreateCOMLocator.java --> Looks like the same as <classname>ServiceLocator.java <rjb> ? What's this "<classname>ServiceLocator.java" that you refer to? This is the <serviceName>Locator class which is the implementation for the service interface above. </rjb> - CreateCOMSoapPort.java --> Looks like the same as <classname>Service.java but it extends javax.xml.rpc.Service instead of java.rmi.Remote <rjb> This is the interface that the stub implements. It gets its name from the portType clause in the WSDL. </rjb> - CreateCOMSoapBindingStub.java --> never used before. <rjb> "Never used before"? What do you mean? We've always had stubs. They implement the portTypeinterface and allow you to make remote calls. You don't necessarily program to them (you typically only program to the interface) but they've always been there. </rjb> I'm not sure, maybe I have to use the SoapBindingStub.java. Thanks a lot Houman CreateCOM.java: package org.tempuri; public interface CreateCOM extends javax.xml.rpc.Service public String getCreateCOMSoapPortAddress(); public org.tempuri.CreateCOMSoapPort getCreateCOMSoapPort() throws javax.xml.rpc.ServiceException; public org.tempuri.CreateCOMSoapPort getCreateCOMSoapPort(java.net.URL portAddress) throws javax.xml.rpc.ServiceException; } CreateCOMSoapPort.java: package org.tempuri; public interface CreateCOMSoapPort extends java.rmi.Remote public java.lang.Object makeConnection(java.lang.String uid, java.lang.String password) throws java.rmi.RemoteException; } CreateCOMLocator.java: package org.tempuri; public class CreateCOMLocator extends org.apache.axis.client.Service implements org.tempuri.CreateCOM { // Use to get a proxy class for CreateCOMSoapPort private final java.lang.String CreateCOMSoapPort_address = " http://localhost/server/CreateCOM.ASP"; public String getCreateCOMSoapPortAddress() { return CreateCOMSoapPort_address; } public org.tempuri.CreateCOMSoapPort getCreateCOMSoapPort() throws javax.xml.rpc.ServiceException { java.net.URL endpoint; try { endpoint = new java.net.URL(CreateCOMSoapPort_address); } catch (java.net.MalformedURLException e) { return null; // unlikely as URL was validated in WSDL2Java } return getCreateCOMSoapPort(endpoint); } public org.tempuri.CreateCOMSoapPort getCreateCOMSoapPort(java.net.URL portAddress) throws javax.xml.rpc.ServiceException { try { return new org.tempuri.CreateCOMSoapBindingStub(portAddress, this); } catch (org.apache.axis.AxisFault e) { return null; // ??? } } /** * For the given interface, get the stub implementation. * If this service has no port for the given interface, * then ServiceException is thrown. */ public java.rmi.Remote getPort(Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException { try { if (org.tempuri.CreateCOMSoapPort.class.isAssignableFrom(serviceEndpointInterface)) return new org.tempuri.CreateCOMSoapBindingStub(new java.net.URL(CreateCOMSoapPort_address), this); } } catch (Throwable t) { throw new javax.xml.rpc.ServiceException(t); } throw new javax.xml.rpc.ServiceException("There is no stub implementation for the interface: " + (serviceEndpointInterface == null ? "null" : serviceEndpointInterface.getName())); } } WSDL File: <?xml version='1.0' encoding='UTF-8' ?> <!-- Generated 05/03/02by Microsoft SOAP Toolkit WSDL File Generator, Version 1.02.813.0 --> <definitions name ='CreateCOM' targetNamespace = 'http://tempuri.org/wsdl/' xmlns:wsdlns='http://tempuri.org/wsdl/' xmlns:typens='http://tempuri.org/type' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:stk='http://schemas.microsoft.com/soap-toolkit/wsdl-extension' xmlns='http://schemas.xmlsoap.org/wsdl/'> <types> <schema targetNamespace='http://tempuri.org/type' xmlns='http://www.w3.org/2001/XMLSchema' xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' elementFormDefault='qualified'> </schema> </types> <message name='CreateCOM.makeConnection'> <part name='uid' type='xsd:string'/> <part name='password' type='xsd:string'/> </message> <message name='CreateCOM.makeConnectionResponse'> <part name='Result' type='xsd:anyType'/> </message> <portType name='CreateCOMSoapPort'> <operation name='makeConnection' parameterOrder='uid password'> <input message='wsdlns:CreateCOM.makeConnection' /> <output message='wsdlns:CreateCOM.makeConnectionResponse' /> </operation> </portType> <binding name='CreateCOMSoapBinding' type='wsdlns:CreateCOMSoapPort' > <stk:binding preferredEncoding='UTF-8'/> <soap:binding style='rpc' transport ='http://schemas.xmlsoap.org/soap/http' /> <operation name='makeConnection' > <soap:operation soapAction ='http://tempuri.org/action/CreateCOM.makeConnection' /> <input> <soap:body use='encoded' namespace='http://tempuri.org/message/' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' /> </input> <output> <soap:body use='encoded' namespace='http://tempuri.org/message/' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' /> </output> </operation> </binding> <service name='CreateCOM' > <port name='CreateCOMSoapPort' binding='wsdlns:CreateCOMSoapBinding' > <soap:address location='http://localhost/server/CreateCOM.ASP' /> </port> </service> </definitions>