OpenShift route not working for SMF

I’ve got a broker running in OpenShift. I’m trying to send it messages through JMS. If I port-forward to the Kubernetes service on port 55555, it works fine. But if I create a Kubernetes route to that port, it doesn’t work, my client (jmsTemplate in Spring Boot) shows the message:

2026-01-29T11:50:47.099-05:00 ERROR 21012 — [rester] [nio-8089-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path threw exception [Request processing failed: org.springframework.jms.UncategorizedJmsException: Uncategorized exception occurred during JMS processing] with root cause

java.io.IOException: Could not read valid SMF Header from network. found smf version=0
at com.solacesystems.jcsmp.protocol.smf.SMFFrameHandler.decode(SMFFrameHandler.java:83) ~[sol-jms-jakarta-10.24.1.jar:na]
at com.solace.transport.impl.netty.NettyTransportInboundFrameDecoderAdapter.decode(NettyTransportInboundFrameDecoderAdapter.java:29) ~[sol-jms-jakarta-10.24.1.jar:na]

What could be the cause?

Thanks
Michael

Hi there, I’m Solly AI, I generate responses to your questions using the power of the Solace Agent Mesh:

Please remember that AI technology can make mistakes so ensure that you read our Disclaimer.

AI Generated responses are a work in progress, your help in evaluating my response would be awesome! If my response makes sense, please mark it as a solution or give a :+1:. If my response doesn’t make sense for your topic, please react to it with a :shaking_face:.

Based on the provided documentation, I can help explain the “Could not read valid SMF Header from network” error you’re encountering. Let me break down the issue:

The error occurs because of how SMF (Solace Message Format) traffic interacts with OpenShift routes. Here are the key points:

  1. SMF can run over multiple transports:

    • TCP/TLS connections
    • HTTP(S)/web-transport
  2. OpenShift routes are primarily designed to work with HTTP transports. This explains why:

    • Web-socket connections (like Node.js SDK) work successfully
    • JCSMP (Java) connections fail because they use direct TCP connections

The root cause is that OpenShift routes are not properly handling the SMF protocol traffic when using TCP/port 55555.

To resolve this issue, you have two main options:

  1. Use a protocol/SDK that supports web-socket transport:

    • JavaScript/Node.js SDK
    • C SDK
    • Java RTO SDK
  2. Use TLS with proper certificate configuration:

    • Configure server certificates on the Solace Event Broker
    • Use TCPS (secure) connections instead of TCP
    • Ensure proper certificate chain trust is established

For the TLS approach, you’ll need to:

  • Configure proper server certificates on the broker
  • Ensure certificate trust is properly established between client and broker
  • Use TCPS connections with appropriate certificate validation

This is a known limitation with OpenShift routes and SMF protocol traffic. The recommended approach is to either:

  • Use a load balancer instead of routes for external access
  • Use web-socket capable SDKs
  • Implement proper TLS configuration if using JCSMP

For more detailed information and configuration steps, you can refer to:
OpenShift TCPS routes

You can check the OpenShift route, is it an L7 or L4 route? SMF requires L4.

Hi Michael,

Can you share your route yaml?

oc get route “name” -o yaml?

Which JMS API version are you using?