FW: Problem with complex types

"Ioannis Kotsiopoulos" <[email protected]>
Newsgroups gmane.comp.apache.webservices.wsif.user
Message-ID <[email protected]>
Hi,

I am trying to create a similar service with the one that already exists in
the samples (Zip2Geo) using complex types but I keep getting the following
error message.

org.apache.wsif.WSIFException: Method getRecord(class
uk.ac.manchester.informatics.www.staticproxy.GetRecord) was not found in
portType {http://www.informatics.manchester.ac.uk}AddressBookPort
	at
org.apache.wsif.base.WSIFClientProxy.findMatchingOperation(Unknown Source)
	at org.apache.wsif.base.WSIFClientProxy.invoke(Unknown Source)
	at $Proxy0.getRecord(Unknown Source)
	at
uk.ac.manchester.informatics.www.client.stub.Run.main(Run.java:60)

If anybody has an idea of how this can be fixed I would be grateful to hear
from him/her.

Thanks

Yannis

Here is the wsdl file:
<?xml version="1.0" encoding="utf-8"?>
<definitions
 xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 xmlns:s="http://www.w3.org/2001/XMLSchema" 
 xmlns:s0="http://www.informatics.manchester.ac.uk"
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" 
   xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
   targetNamespace="http://www.informatics.manchester.ac.uk"
    xmlns="http://schemas.xmlsoap.org/wsdl/">
    
    
    
	<types>
		<s:schema elementFormDefault="qualified"
targetNamespace="http://www.informatics.manchester.ac.uk">
			<s:element name="GetRecord">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="0"
maxOccurs="1" name="id" type="s:string" />
						<s:element minOccurs="0"
maxOccurs="1" name="LicenseKey" type="s:string" />
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:element name="GetRecordResponse">
				<s:complexType>
					<s:sequence>
						<s:element minOccurs="1"
maxOccurs="1" name="GetRecordResult" type="s0:RecordReturn" />
					</s:sequence>
				</s:complexType>
			</s:element>
			<s:complexType name="RecordReturn">
				<s:sequence>
					<s:element minOccurs="1"
maxOccurs="1" name="FirstName" type="s:string" />
					<s:element minOccurs="1"
maxOccurs="1" name="Surname" type="s:string" />

				</s:sequence>
			</s:complexType>
	
		</s:schema>
	</types>
	
	<message name="GetRecordSoapIn">
		<part name="parameters" element="s0:GetRecord" />
	</message>
	<message name="GetRecordSoapOut">
		<part name="parameters" element="s0:GetRecordResponse" />
	</message>

	<portType name="AddressBookPort">
		<operation name="getRecord">
			<documentation>This method has an input a number and
matches it to a name</documentation>
			<input message="s0:GetRecordSoapIn" />
			<output message="s0:GetRecordSoapOut" />
		</operation>
	</portType>
	<binding name="AddressBookPortBinding" type="s0:AddressBookPort">
		<soap:binding
transport="http://schemas.xmlsoap.org/soap/http" style="document" />
		<operation name="getRecord">
			<soap:operation
soapAction="http://www.informatics.manchester.ac.uk/getRecord"
style="document" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>
	</binding>
	<service name="AddressBook">
		<port name="AddressBookPort"
binding="s0:AddressBookPortBinding">
			<soap:address
location="http://localhost:9080/ComplexService1/services/AddressBookPort" />
		</port>
	</service>
</definitions>

<---- And this part of the client code:  --->
package uk.ac.manchester.informatics.www.client.stub;

import org.apache.wsif.WSIFService;
import org.apache.wsif.WSIFServiceFactory;
import org.apache.wsif.WSIFException;

import uk.ac.manchester.informatics.www.staticproxy.*;
import javax.xml.namespace.QName;
import java.rmi.RemoteException;

public class Run {

public static void main(String[] args) {
        try {
            if (args.length != 2) {
                System.exit(1);
            }

            // create a service factory
            WSIFServiceFactory factory = WSIFServiceFactory.newInstance();

            // parse WSDL
        WSIFService service = factory.getService( args[0],  null, null,
"http://www.informatics.manchester.ac.uk", "AddressBookPort");
            
		// map types
            			            
            service.mapType(new
QName("http://www.informatics.manchester.ac.uk", "GetRecordResponse"),
Class.forName("uk.ac.manchester.informatics.www.GetRecordResponse"));
			service.mapType(new
QName("http://www.informatics.manchester.ac.uk", "GetRecord"),
Class.forName("uk.ac.manchester.informatics.www.GetRecord"));
			service.mapType(new
QName("http://www.informatics.manchester.ac.uk", "RecordReturn"),
Class.forName("uk.ac.manchester.informatics.www.RecordReturn"));
      		
      		      			
            // create the stub
   			AddressBookPort stub =
(AddressBookPort)service.getStub(AddressBookPort.class);
            
            // do the invocation
		   GetRecordResponse response = new GetRecordResponse();
		   GetRecord record = new GetRecord();
		   record.setId("2");
		   record.setLicenseKey("none");
		   response = stub.getRecord(record);	
 
System.out.println(response.getGetRecordResult().getFirstName());
	
System.out.println(response.getGetRecordResult().getSurname());
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.