Thanks for your help. When I do so, I receive an error stating
that
String[] is expected.
In a message dated 7/15/2004 1:30:39 PM Eastern Standard Time,
[EMAIL PROTECTED] writes:
James,
Instead of casting the results right away to String[],
try setting the results to Object or Object[] and then doing a getClass on
that object to see what the run-time class is. Knowing what the runtime
class is may give you insights into what the service is returning and what
your client must do.
Anand
On Thu, 15 Jul 2004 [EMAIL PROTECTED]
wrote:
: : Changing the WSDL from Document to Wrapped does not help
eliminate the : ClassCastException : : Does anybody have any ideas
what could be bugging this program? : : In a message dated 7/15/2004
12:49:06 PM Eastern Standard Time, : [EMAIL PROTECTED] writes: : :
I think you should be okay, but I am in the process of : migrating
from rpc/encoded to wrapped/literal, so I can't : say for
sure. : : Anand : : On Thu, 15 Jul 2004 [EMAIL PROTECTED]
wrote: : : : : : 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 :
: : : : : : : : : : : : : : : : : : : : :
: : : : : : : :
|