I have a stateless enterprise Javabean exposed as a Web service running on Weblogic server 6.0, and this is being accessed by a Visual Basic .NET client. I'm using Apache SOAP 2.2. One of the methods of the service returns an array of a Java class called "TransactionHelper". This TransactionHelper class contains 4 properties, one "String", one "double" and two "booleans". This TransactionHelper class conforms to the criteria for a "javabean" so I have mapped the class to the "beanSerializer" included in Apache SOAP.
In the "Type Mappings" section of the Apache SOAP admin, I have given the TransactionHelper class a "Namespace URI" of "urn:xml-TransactionHelper". I have generated a "wsdl" file using IBM's wstk 3.0. I then copied this file to a directory on the client machine, and ran Microsofts "wsdl.exe" tool, to generate a proxy class for the Web client. The Web client then uses the proxy class to communicate with the Web service. The problem is, that when I run it and call the method in question, I get the following error message: "System.InvalidOperationException: The specified type was not recognized: name='TransactionHelper', namespace='urn:xml-TransactionHelper', at <return xmlns=''>."
Is there possibly something missing in my generated "wsdl" file? Any help would be appreciated.
I can't answer this question without seeing the generated WSDL document, but I expect that your WSDL defines the response as an array of TransactionHelper types, and doesn't provide a type definition for this TransactionHelper type. You probably need to create an XML Schema to describe the TransactionHelper type and import that schema into your WSDL file in the types section (map the urn:xml-TransactionHelper namespace to this schema). Then .NET should be able to interpret the response.
Dig Deeper on Topics Archive
Related Q&A from Anne Thomas Manes
Anne Thomas Manes explains the differences between open source clients and open source implementations. Continue Reading
Anne Thomas Manes discusses the best way to go about creating an enterprise data dictionary and why the systems works well. Continue Reading
Anne Thomas Manes explains the difference between 'hard' real time and 'live' real time systems. Continue Reading