Generic Web Service Client error upon connecting to DGWS

Hi!

I’m trying to connect to the DiscoveryGate Web Service (DGWS) with SOAP.

WSDL: https://www.discoverygate.com/webservice/1.2/DGWS?WSDL
API ref: https://www.discoverygate.com/webservice/1.2/docs/api-reference/index.html

I can successfully load the WSDL, and fill out the required information. However, when I try to execute the node, it gives me the following error:

WARN Generic Web Service Client 0:1 Failed on row “Row0”: Can not set java.util.List field com.discoverygate.webservice.types.ServiceRequest.moleculeFlags to com.discoverygate.webservice.types.MoleculeRetrievalFlags
ERROR Generic Web Service Client 0:1 Execute failed: Webservice invocation failed on all rows, check log for details

Does anyone have a fix for this? Or can someone suggest an alternative connection method using the REST nodes?

Note: DGWS needs a valid license to perform a search, but as I can’t even invoke the service, that’s not a problem for reproducing the issue.

Relevant log information regarding the WARN:

2020-02-28 15:32:39,866 : WARN : KNIME-Worker-47-Generic Web Service Client 0:1 : : WSExecutor : Generic Web Service Client : 0:1 : Failed on row “Row0”: Can not set java.util.List field com.discoverygate.webservice.types.ServiceRequest.moleculeFlags to com.discoverygate.webservice.types.MoleculeRetrievalFlags
java.lang.IllegalArgumentException: Can not set java.util.List field com.discoverygate.webservice.types.ServiceRequest.moleculeFlags to com.discoverygate.webservice.types.MoleculeRetrievalFlags

  • at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)*
  • at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)*
  • at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)*
  • at java.lang.reflect.Field.set(Field.java:764)*
  • at com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection.set(Accessor.java:280)*
  • at org.knime.ext.cxf.webservice.client.node.SingleParamNode.writeChildValue(SingleParamNode.java:952)*
  • at org.knime.ext.cxf.webservice.client.node.SingleParamNode.internalCreateInvocationObject(SingleParamNode.java:936)*
  • at org.knime.ext.cxf.webservice.client.node.SingleParamNode.createInvocationObjects(SingleParamNode.java:896)*
  • at org.knime.ext.cxf.webservice.client.node.WSExecutor.calculate(WSExecutor.java:254)*
  • at org.knime.ext.cxf.webservice.client.node.CxfClientNodeModel.execute(CxfClientNodeModel.java:85)*
  • at org.knime.core.node.NodeModel.execute(NodeModel.java:737)*
  • at org.knime.core.node.NodeModel.executeModel(NodeModel.java:571)*
  • at org.knime.core.node.Node.invokeFullyNodeModelExecute(Node.java:1236)*
  • at org.knime.core.node.Node.execute(Node.java:1016)*
  • at org.knime.core.node.workflow.NativeNodeContainer.performExecuteNode(NativeNodeContainer.java:557)*
  • at org.knime.core.node.exec.LocalNodeExecutionJob.mainExecute(LocalNodeExecutionJob.java:95)*
  • at org.knime.core.node.workflow.NodeExecutionJob.internalRun(NodeExecutionJob.java:218)*
  • at org.knime.core.node.workflow.NodeExecutionJob.run(NodeExecutionJob.java:124)*
  • at org.knime.core.util.ThreadUtils$RunnableWithContextImpl.runWithContext(ThreadUtils.java:334)*
  • at org.knime.core.util.ThreadUtils$RunnableWithContext.run(ThreadUtils.java:210)*
  • at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)*
  • at java.util.concurrent.FutureTask.run(FutureTask.java:266)*
  • at org.knime.core.util.ThreadPool$MyFuture.run(ThreadPool.java:123)*
  • at org.knime.core.util.ThreadPool$Worker.run(ThreadPool.java:246)*

Hi @adam_of_barot and welcome to the forum.

I can reproduce the same error you’re seeing. Let me check internally and see if someone else can shed some additional light here.

EDIT: note that according to the node description, “this node does currently not support optional input parameters. Also web services that need authentication are not accessible.” We have a ticket in our system to update the node to address the former issue (internal reference: AP-11673). So that may be the problem - but I’ll ask.

Hi @ScottF, thank you for looking into the issue.

I’m guessing the issue shouldn’t be with authentication, as the node gets stuck on processing the ‘moleculeFlags’ parameter. Also, authentication is seemingly done by the ‘licenseKey’ parameter, so I don’t have to use the node’s ‘Authentication’ tab.

I was actually thinking it might be due more to the “optional input parameters”. But one of our support engineers suggested that it might be a data type issue - moleculeFlags is of type MoleculeRetrievalFlags, and KNIME isn’t handling that correctly.

Does DiscoveryGate offer a REST interface as well?

Oh, I get it. I was focusing on the wrong part of our quote then.

As far as I know, DiscoveryGate doesn’t offer a REST API unfortunately.

Hi Scott,
Knime still can’t support optional input parameters?
I have a service that requieres 2 parameters and it is failing. Can that be solve?