Can I get away with wrapped/literal for .net compatibilty?
In a message dated 7/15/2004 10:28:41 AM Eastern Standard Time,
[EMAIL PROTECTED] writes:
James,
I noticed the SOAP response I pasted below when I used
an interactive tool to send/receive SOAP messages. That tool is good for
testing, not production. For production, I switched to wrapped/literal, and
clients targetting that get back an array just fine.
wrapped/literal
is supposed to be equivalent to document/literal (except, of course, for an
additional enclosing tag). Would it be possible for you to change your
server to wrapped/literal?
Anand
On Thu, 15 Jul 2004
[EMAIL PROTECTED] wrote:
: Thank you for your responses, : : I was
wondering if you could tell me exactly what you did to get it ot
work. : Currently an array is is the needed type in my java (yes I
use Doc/Lit), : however the error occurs anyway. : : Please
help, : James : : In a message dated 7/14/2004 7:00:42 PM Eastern
Standard Time, : [EMAIL PROTECTED] writes: : : James, : :
I'll back off from my claim that there's a problem. : When I write a
class/interface that has a method : that returns a string array, the
WSDL seems to indicate : that the return is a single xsd:string. Even
the : stubs generated from the WSDL show a return of String. :
However, when I actually invoke the method, I do get : back the
array, just in different namespaces: : : ... :
<soapenv:Body> : <echoArrReturn
xmlns="urn:EchoDocLit">vlad</echoArrReturn> :
<ns1:echoArrReturn
xmlns:ns1="urn:EchoDocLit">is</ns1:echoArrReturn> :
<ns2:echoArrReturn
xmlns:ns2="urn:EchoDocLit">sanguine</ns2:echoArrReturn> :
</soapenv:Body> : ... : : Perhaps that's what the spec
for doc/lit indicates, but : it seems unintuitive to me. : :
I'm moving over to wrapped/literal after this experience; : perhaps
you could do the same. : : Anand : : On Wed, 14 Jul 2004,
Anand Natrajan wrote: : : : Is your web service exposed as a
document/literal? : : If yes, I face a similar problem - Axis 1.2 beta :
: (June 14th release) makes the return type of the : : method a
String, instead of String[]. The problem : : is right where I do
java2wsdl - even the WSDL, I : : think, is incorrrect. The problem
does not occur : : with rpc/encoded, rpc/literal or
wrapped/literal. : : : : I mailed a post about this a week or so
ago but got : : no response. I'm compiling a test case along with : :
the WSDL and sample clients to illustrate the issue. : : Next
post... : : : : Anand : : : : On Wed, 14 Jul 2004
[EMAIL PROTECTED] wrote: : : : : : : : : I have a very nice Axis
Web Service running in which I call a "query" : : : function which
returns an arbitrarily sized array of type String[]. : : : : : : I
call the axis implementation file with the following call (Assume
all : : : setup of service is correct): : : : : : :
java.lang.String[] yes_list = :
(java.lang.String[])handler.query(groupName, : : : password,
accountName, conditions); : : : : : : handler.query is the function
which returns the String[]. Regardless, : this : : : function,
while actually successfully running through Axis, brings about :
the : : : following exception on the local machine: : : : : : :
java.lang.ClassCastException : : : java.lang.ClassCastException :
: : at $Proxy0.query(Unknown Source) : : : at : : : :
_2._0._0._127.axis.services.adminHandlerServicePort.adminHandlerClient2.main(adminHandler :
: : Client2.java:77) : : : : : : I have checked the mailing list
for possible causes but to know avail. : Would : : : somebody be
kind enough to offer some advice as to how I could stop this : : :
message from coming up? : : : : : : Below is my client
program: : : : package
placeholder.axis.services.clientHandlerServicePort; : : : : : : public
class clientHandlerClient2 : : : { : : : static String
url = : : :
"_http://placeholder/axis/services/clientHandlerServicePort_ :
(http://placeholder/axis/services/clientHandlerServicePort) "; : : :
static String router =
"_http://placeholder/axis/clientDirect_ : : :
(http://placeholder/axis/clientDirect) "; : : : : : :
static String service = "clientDirectService.wsdl"; : : : :
: : : : : public static void main(String[] args) : : :
{ : : : try : : : { : : : System.err.println("This Client tests
getReport"); : : : : : : ServiceFactory sf =
ServiceFactory.newInstance(); : : : URL u = new URL(router + "/"
+ service); : : : QName serviceName = new
QName(url,"clientHandlerService"); : : : Service s =
sf.createService(u,serviceName); : : : : : :
QName portName = new
QName(url,"clientHandlerServicePort"); : : : : : :
List handlerChain = : : :
s.getHandlerRegistry().getHandlerChain(portName); : : : HandlerInfo hi
= new HandlerInfo(LoggingHandler.class,null,null); : : :
handlerChain.add(hi); : : : : : :
//Checking for proper syntax of call : : :
if (args.length!=3) : : : { : : :
System.err.println("Incorrect usage of Client. Please use the :
following:"); : : : System.err.println("clientHandlerClient" + "
[Account Name]" + " : : : [Password]" + "
[Conditions]"); : : : } : : : else : : : { : : :
System.out.println("Thank You. Processing. . ."); : : :
ClientHandler handler = (ClientHandler) s.getPort(portName, : :
: ClientHandler.class); : : : : : : String
accountName = args[0]; : : : String password
= args[1]; : : : String conditions = args[2]; : :
: : : : if(s == null) : : : System.out.println("Service Not
Working Properly"); : : : : : : String[] queryList =
handler.query(accountName, password, : conditions); : : : : :
: System.out.println("Testing in csv format"); : :
: String format = "csv"; : : : : : : String[] rawQueryList
= handler.getQuery(accountName, password, : queryList, : : :
format); : : : : : : System.out.println("Finished."); :
: : } : : : } : : : catch(Exception e) : : : { : : :
System.err.println("Error running Client:"); : : :
System.err.println(e); : : : e.printStackTrace(); : : : } : : :
} : : : } : : : : : : I would appreciate any comments on this
manner. I have checked the : : : axis-mailing list for previous
solutions however have found none have : been helpful for :
: : me to diagnose. : : : : : : Sincere Thanks, : : : James
Crosson : : : : :
|