I simplified my program such that it works with the old wsif, but failes with
the error I wrote before if I just replace the libraries.
the classes and the package used for the mapping in the line
sq.mapPackage(typesNS, "complextypes.GoogleSearch");
exist. The new version of wsif using axis-1.2 just can't find the classes. I
saw there a lot of changes with all the WSIFMappingConvention etc. I couldn't
find the place where the classes are actually loaded (the method was
resolveMapping() in the old version)
Thank you
Michael
package src;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.wsdl.Definition;
import javax.wsdl.Message;
import javax.wsdl.Part;
import javax.wsdl.PortType;
import javax.wsdl.Service;
import javax.xml.namespace.QName;
import org.apache.wsif.WSIFException;
import org.apache.wsif.WSIFMessage;
import org.apache.wsif.WSIFOperation;
import org.apache.wsif.WSIFPort;
import org.apache.wsif.WSIFService;
import org.apache.wsif.WSIFServiceFactory;
import org.apache.wsif.schema.Parser;
import org.apache.wsif.schema.SchemaType;
import org.apache.wsif.util.WSIFUtils;
public class Run {
public static void main(String[] args) throws Exception {
Definition def =
WSIFUtils.readWSDL(null,"http://api.google.com/GoogleSearch.wsdl");
Service service = def.getService(null);
PortType porttype = def.getPortType(null);
WSIFService sq =
WSIFServiceFactory.newInstance().getService(def, service, porttype);
WSIFPort port = sq.getPort();
WSIFOperation operation =
port.createOperation("doGoogleSearch");
WSIFMessage input = operation.createInputMessage();
WSIFMessage output = operation.createOutputMessage();
WSIFMessage fault = operation.createFaultMessage();
// Get the schema namespace
ArrayList schemaTypes = new ArrayList();
Parser.getAllSchemaTypes(def, schemaTypes, null);
String typesNS;
if (schemaTypes.isEmpty() != true) typesNS = ((SchemaType)
schemaTypes.get(0)).getTypeName().getNamespaceURI();
else typesNS = def.getTargetNamespace();
sq.mapPackage(typesNS, "complextypes.GoogleSearch");
Map InputMap = new HashMap();
Map OutputMap = new HashMap();
InputMap.put("filter",new Boolean("true"));
InputMap.put("key","SwY/mvFQFHKePiGQHKMA4ww0YbP7pWiB");
InputMap.put("maxResults", new Integer(10));
InputMap.put("q","JOpera");
InputMap.put("restrict","no");
InputMap.put("safeSearch",new Boolean("true"));
InputMap.put("start", new Integer(1));
InputMap.put("lr","");
InputMap.put("oe","");
InputMap.put("ie","");
// Set Parameters for the Input Message from the Job Input Map
String partName;
Object partValue;
Message in = input.getMessageDefinition();
Iterator it = in.getParts().values().iterator();
while (it.hasNext()) {
Part p = (Part) it.next();
partName = p.getName();
partValue = InputMap.get(partName);
InputMap.remove(partName);
input.setObjectPart(partName, partValue);
}
if (InputMap.isEmpty() != true) {
Iterator notused = InputMap.keySet().iterator();
while (notused.hasNext()) {
partName = (String) notused.next();
partValue = InputMap.get(partName);
input.setObjectPart(partName, partValue);
}
}
try {
//Invoke the Web Service
Iterator partNames;
if (operation.executeRequestResponseOperation(input,
output, fault)) {
//Put the Results of the Invocation to the Job
Output Map
partNames = output.getPartNames();
while (partNames.hasNext()) {
partName = (String) partNames.next();
partValue =
output.getObjectPart(partName);
OutputMap.put(partName,partValue);
}
} else {
// Print Fault Message
Iterator i = fault.getPartNames();
String partname = "";
while (i.hasNext()) {
partname =(String) i.next();
System.err.println("Fault Message" + "
- " + fault.getObjectPart(partname));
}
}
} catch (WSIFException we) {
System.err.println("Exception invoking the WS: " +
we.getMessage());
we.printStackTrace();
}
}
}
-----Urspr�ngliche Nachricht-----
Von: Aleksander Slominski [mailto:[EMAIL PROTECTED]
Gesendet: Fr 03.06.2005 19:21
An: [email protected]
Betreff: Re: Problems with update to WSIF nightly build (wsif-2.0.1_IB3)
Lorenzi, Michael wrote:
>hi all,
>
>I wanted to update to axis-1.2. Now, WSIF can't find my generated classes i
>use for the type-mapping.
>
>I made a custom ClassLoader and set it with setContextClassLoader() at the
>beginning. That works fine with the old WSIF. With the nightly build, i get
>the error:
>
>EXIT WSIFDefaultMessage.getObjectPart(org.xml.sax.SAXException: Deserializing
>parameter 'return': could not find deserializer for type
>{urn:GoogleSearch}GoogleSearchResult)
>
>
>
>Looks like it can't find my classes anymore. Is there any change in loading
>the classes for the mapping in the new build of WSIF?
>
>
i do not think there was any architectural change - how to reproduce
your error (in few easy steps ...)?
thanks,
alek
--
The best way to predict the future is to invent it - Alan Kay