Generic Webservice Client - help please?

Dear All,

I have been trying to access the EBI's WU-Blast webservice using the Generic Webservice Client, via the following WSDL:

http://www.ebi.ac.uk/Tools/services/soap/wublast?wsdl

The service analyses ok, but when I try to access the 'run' operation (and pass in some query terms), I see the following message in the console:

WARN WSExecutor Failed on row "Row1": Webservices with JAXBElement as input parameter not supported (child "exp"; parent type: "uk.ac.ebi.jdispatcher.soap.InputParameters")

ERROR Generic Webservice Client Execute failed: Webservice invocation failed on all rows, check log for details

The log file shows:

2011-09-02 17:30:20,243 WARN KNIME-Worker-3 WSExecutor : Failed on row "Row1": Webservices with JAXBElement as input parameter not supported (child "exp"; parent type: "uk.ac.ebi.jdispatcher.soap.InputParameters") 2011-09-02 17:30:20,243 DEBUG KNIME-Worker-3 WSExecutor : Failed on row "Row1": Webservices with JAXBElement as input parameter not supported (child "exp"; parent type: "uk.ac.ebi.jdispatcher.soap.InputParameters") java.lang.UnsupportedOperationException: Webservices with JAXBElement as input parameter not supported (child "exp"; parent type: "uk.ac.ebi.jdispatcher.soap.InputParameters") at org.knime.ext.webservice.client.node.SingleParamNode.internalCreateInvocationObject(SingleParamNode.java:916) at org.knime.ext.webservice.client.node.SingleParamNode.internalCreateInvocationObject(SingleParamNode.java:926) at org.knime.ext.webservice.client.node.SingleParamNode.createInvocationObjects(SingleParamNode.java:887) at org.knime.ext.webservice.client.node.WSExecutor.calculate(WSExecutor.java:242) at org.knime.ext.webservice.client.node.WSClientNodeModel.execute(WSClientNodeModel.java:89) at org.knime.core.node.NodeModel.execute(NodeModel.java:668) at org.knime.core.node.NodeModel.executeModel(NodeModel.java:524) at org.knime.core.node.Node.execute(Node.java:873) at org.knime.core.node.workflow.SingleNodeContainer.performExecuteNode(SingleNodeContainer.java:840) at org.knime.core.node.exec.LocalNodeExecutionJob.mainExecute(LocalNodeExecutionJob.java:100) at org.knime.core.node.workflow.NodeExecutionJob.run(NodeExecutionJob.java:166) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at org.knime.core.util.ThreadPool$MyFuture.run(ThreadPool.java:124) at org.knime.core.util.ThreadPool$Worker.run(ThreadPool.java:239) 2011-09-02 17:30:20,246 DEBUG KNIME-Worker-3 Generic Webservice Client : reset 2011-09-02 17:30:20,247 DEBUG KNIME-Worker-3 Generic Webservice Client : clean output ports. 2011-09-02 17:30:20,247 ERROR KNIME-Worker-3 Generic Webservice Client : Execute failed: Webservice invocation failed on all rows, check log for details 2011-09-02 17:30:20,247 DEBUG KNIME-Worker-3 Generic Webservice Client : Execute failed: Webservice invocation failed on all rows, check log for details java.lang.Exception: Webservice invocation failed on all rows, check log for details at org.knime.ext.webservice.client.node.WSExecutor.calculate(WSExecutor.java:273) at org.knime.ext.webservice.client.node.WSClientNodeModel.execute(WSClientNodeModel.java:89) at org.knime.core.node.NodeModel.execute(NodeModel.java:668) at org.knime.core.node.NodeModel.executeModel(NodeModel.java:524) at org.knime.core.node.Node.execute(Node.java:873) at org.knime.core.node.workflow.SingleNodeContainer.performExecuteNode(SingleNodeContainer.java:840) at org.knime.core.node.exec.LocalNodeExecutionJob.mainExecute(LocalNodeExecutionJob.java:100) at org.knime.core.node.workflow.NodeExecutionJob.run(NodeExecutionJob.java:166) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at org.knime.core.util.ThreadPool$MyFuture.run(ThreadPool.java:124) at org.knime.core.util.ThreadPool$Worker.run(ThreadPool.java:239)

 

Can anyone point me towards whether this is a KNIME problem, or something to do with the service I am connecting to (or, of course, something I am doing wrong!)?

Kind regards

James

Hi James,

It's a KNIME problem or - phrased differently - a limitation of the node. We do know that it's not working with all services; as soon as they get a bit more complicated, it chokes. We are using CXF to translate the wsdl to java at runtime and then assign input/output fields to the generated java classes. In your case it contains JAXBElements (I think the service expects parts of the input parameters as xml attributes and not xml elements), which are not really working. Obviously.

So in short: It's an accepted limitation of the node. If you necessarily need to consume this service, I suggest that you write a node that specifically calls this service  - it's fairly simply as you know the contract at design time. You could also consider to  sponsor an enhancement to this node (this JAXBElements problem has come up a couple of times but as our ressources are limited we will not put much effort into the node anytime soon unless it's sponsored development).

Sorry for that.

Regards,
  Bernd

Hi,

I tried the generic web service client with the following public wsdl.

http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL

I am not able to get any weather information. (The output table is empty)

Can anyone else verify this? Just want to make sure it the limitation of the node.

Cheers,

Ken