[kepler-dev] Questions on web service integration

Eric Whitley e-whitley at northwestern.edu
Wed Oct 24 09:01:52 PDT 2007


Hello -

I'm new to Kepler and the list, so "hello, everyone." :)  We're just  
getting started with the tool, but are really impressed with how  
approachable it makes what would otherwise be complex programming  
exercises.

Wondering if anyone might be able to point me in the right direction  
for an issue I'm having invoking a remote web service.

Short Version of Question:
----------
When you incorporate a web service how do you deal with data types  
for inputs and outputs?  Seems that when I attach the output of a web  
service to a display actor I get exceptions like "could not find  
deserializer for type."


Long Version of Question:
----------
The tutorial on hitting (http://xml.nig.ac.jp/wsdl/DDBJ.wsdl ->  
getXMLEntr) worked well, so I figured I'd move on a bit by  
incorporating a different service.  I'm trying to replicate the basic  
setup of that tutorial, but instead I'm invoking some of the more  
common sample services I've used in the past.  EX:

http://ws.intalio.com/TimeService/TimeService.wsdl   (getUTCTime)
http://ws.strikeiron.com/HouseofDev/CurrencyRates160?WSDL   
(getCurrenciesList)

A bit on my setup
-----------
OS: Mac OS X 10.4.10 (intel)
Kepler: beta 3

What I'm attempting
(verbose, but I don't know if the devil is in the details)
-----------
* Read as many of the tutorials, help files, sample files, etc. that  
I can find
* Started kepler from the shell so I can see more logging output
* Dropped in an SDF director
* Dropped in a web service
      - added wsdl reference (http://ws.intalio.com/TimeService/ 
TimeService.wsdl)
      - named actor "Get UTC Time WS"
      - closed web service and re-opened it
      - selected "getUTCTime" method
* Dropped in two displays
      - one for general output
      - one for error output
      - named actors "WS Display" and "WS Error"
* Dropped in a string constant for the input
      - named it "My Input"
      - Set value to "0" (no quotes in the value)
* Connected ports
      - String -> Web Service input
      - Web Service Error -> WS Error
      - Web Service Display -> WS Display

** When I hit start I see the process executes (lower left side of  
main window), but no data shows up in either of the display outputs
** Terminal window shows the following:
----------------------------------
PORT TYPE in PTOLEMY ACTOR: string
ERROR (org.apache.axis.client.Call:invoke:2469) Exception:
org.xml.sax.SAXException: Deserializing parameter  
'getUTCTimeResult':  could not find deserializer for type {http:// 
ws.intalio.com/TimeService/}>getUTCTimeResponse
         at org.apache.axis.message.RPCHandler.onStartChild 
(RPCHandler.java:277)
         at  
org.apache.axis.encoding.DeserializationContext.startElement 
(DeserializationContext.java:1035)
         at org.apache.axis.message.SAX2EventRecorder.replay 
(SAX2EventRecorder.java:165)
         at org.apache.axis.message.MessageElement.publishToHandler 
(MessageElement.java:1141)
         at org.apache.axis.message.RPCElement.deserialize 
(RPCElement.java:236)
         at org.apache.axis.message.RPCElement.getParams 
(RPCElement.java:384)
         at org.apache.axis.client.Call.invoke(Call.java:2467)
         at org.apache.axis.client.Call.invoke(Call.java:2366)
         at org.apache.axis.client.Call.invoke(Call.java:1812)
         at org.sdm.spa.WebService.fire(WebService.java:865)
         at ptolemy.actor.AtomicActor.iterate(AtomicActor.java:337)
         at ptolemy.actor.sched.StaticSchedulingDirector.fire 
(StaticSchedulingDirector.java:170)
         at ptolemy.actor.CompositeActor.fire(CompositeActor.java:331)
         at ptolemy.actor.Manager.iterate(Manager.java:668)
         at ptolemy.actor.Manager.execute(Manager.java:327)
         at ptolemy.actor.Manager.run(Manager.java:1044)
         at ptolemy.actor.Manager$3.run(Manager.java:1085)

; nested exception is:
         org.xml.sax.SAXException: Deserializing parameter  
'getUTCTimeResult':  could not find deserializer for type {http:// 
ws.intalio.com/TimeService/}>getUTCTimeResponse
The remote exception error occured in the actor: Get UTC Time WS
----------------------------------

I see that the Display actor takes type:general and the web service  
_thinks_ (at least according to the designer) that it's typing the  
output as string, but... I'm not entirely sure, then, what I've  
failed to do to get things wired up correctly.  Is there something I  
need to do between the web service output and display input ports?

Any direction would be very much appreciated.

Thanks in advance,
Eric


More information about the Kepler-dev mailing list