Hello,
I am receiving the following error when attempting to run the GET Request node. Previously, I had no issues with connecting to API endpoints using this node and successfully returning data, however I am now facing this error seemingly regardless of node configuration. I have tried updating, uninstalling, and re-installing the KNIME REST Client Extension, however the issue persists. As an alternate solution, I’m using a Python Script node to execute a GET request, however I would like to be able to use the native KNIME node if possible for a solution that I’m building for some business partners. Any assistance is appreciated. Thank you.
ERROR GET Request 4:14 Execute failed: No conduit initiator was found for the namespace http://cxf.apache.org/transports/http.
Hello @austinglusac1,
Welcome to the Forum.
Could you please share your KNIME log? You will find it under Menu → Show KNIME log in File Explorer. It might contain more relevant information.
On a quick google search, I found this. Hope it helps.
Best,
Keerthan
1 Like
Thank you for the response. Please see below for the KNIME log. I found that StackOverflow thread as well, but am unfamiliar with what it means and how to add cxf-rt-transports-http-jetty from a KNIME perspective. Can you offer guidance on this?
2024-08-27 16:28:42,325 : ERROR : KNIME-Worker-12-GET Request 6:14 : : Node : GET Request : 6:14 : Execute failed: No conduit initiator was found for the namespace http://cxf.apache.org/transports/http.
org.apache.cxf.interceptor.Fault: No conduit initiator was found for the namespace http://cxf.apache.org/transports/http.
at org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(AbstractConduitSelector.java:117)
at org.apache.cxf.endpoint.UpfrontConduitSelector.selectConduit(UpfrontConduitSelector.java:77)
at org.apache.cxf.jaxrs.client.ClientConfiguration.getConduit(ClientConfiguration.java:204)
at org.apache.cxf.jaxrs.client.ClientConfiguration.getHttpConduit(ClientConfiguration.java:213)
at org.knime.rest.nodes.common.RestNodeModel.createRequest(RestNodeModel.java:1212)
at org.knime.rest.nodes.common.RestNodeModel.makeFirstCall(RestNodeModel.java:454)
at org.knime.rest.nodes.common.RestNodeModel.execute(RestNodeModel.java:412)
at org.knime.core.node.NodeModel.executeModel(NodeModel.java:558)
at org.knime.core.node.Node.invokeFullyNodeModelExecute(Node.java:1274)
at org.knime.core.node.Node.execute(Node.java:1036)
at org.knime.core.node.workflow.NativeNodeContainer.performExecuteNode(NativeNodeContainer.java:595)
at org.knime.core.node.exec.LocalNodeExecutionJob.mainExecute(LocalNodeExecutionJob.java:98)
at org.knime.core.node.workflow.NodeExecutionJob.internalRun(NodeExecutionJob.java:201)
at org.knime.core.node.workflow.NodeExecutionJob.run(NodeExecutionJob.java:117)
at org.knime.core.util.ThreadUtils$RunnableWithContextImpl.runWithContext(ThreadUtils.java:367)
at org.knime.core.util.ThreadUtils$RunnableWithContext.run(ThreadUtils.java:221)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at org.knime.core.util.ThreadPool$MyFuture.run(ThreadPool.java:123)
at org.knime.core.util.ThreadPool$Worker.run(ThreadPool.java:246)
Caused by: org.apache.cxf.BusException: No conduit initiator was found for the namespace http://cxf.apache.org/transports/http.
at org.apache.cxf.bus.managers.ConduitInitiatorManagerImpl.getConduitInitiator(ConduitInitiatorManagerImpl.java:108)
at org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(AbstractConduitSelector.java:106)
… 19 more
Hello,
Since you mention it was working fine before. Did you make any changes/update from your side in between?
Best,
Keerthan
1 Like
Dear KNIME Support, I am having the same issue while working on a new version of our own Novartis extension for KNIME. Apparently, I am bringing in certain new dependencies, which have the effect of producing this error. I am wondering how to fix this properly, but first I will have to try to find the causing libraries or code… Any update to this thread would be appreciated, because it would help me and others to avoid certain pitfalls when developing extensions for KNIME.
Hello all,
a late chime-in on @austinglusac1’s question: yes, we know of a bug (internal ticket AP-20595) in the KNIME Analytics Platform where using NTLM authentication in the REST client nodes can cause these error messages.
No conduit initiator was found for the namespace http://cxf.apache.org/transports/http
.
As far as we know, this bug was fixed starting from version 5.1. Which version are you using?
Regarding @manuelschwarze’s issue, we found that the messages are caused by unintentionally closing the CXF bus which is responsible for all message transmissions in the CXF library. Note that the org.apache.cxf.Bus is typically a global (or at least thread-local) object, meaning that dependencies could mess with it.
Click here for technical details on our solution.
Our solution then (for 5.1) was to ensure the bus was open and running by calling the following utility before creating and using any CXF clients. See also BusFactory#getThreadDefaultBus.
var thread = Thread.currentThread();
var classLoader = thread.getContextClassLoader();
try {
thread.setContextClassLoader(classObjectWhereToUseCXF.getClassLoader());
// This must be initialized with the correct context classloader.
// Otherwise no bus extension will be found.
var bus = BusFactory.getThreadDefaultBus(false);
if (bus == null) {
bus = BusFactory.newInstance().createBus();
BusFactory.setThreadDefaultBus(bus);
}
return bus;
} finally {
thread.setContextClassLoader(classLoader);
}
But it is preferable to track down the source where the bus is closed and keep if open (if possible). You rather do not want to recreate the “backbone” of CXF many times over. That is why we aren’t using this snippet anymore, and instead make sure the bus is not closed in the first place.
I hope this helps!
Best, Leon
1 Like