3 0 0 4

RSSL_HTTP Channel type leads to HttpChannelConfig cannot be cast to SocketChannelConfig exception

I'm using EMA 3.0.0.L1 in order to connect to Electron.

I tried to switch client library to RSSL_HTTP channel type (from standard RSSL_SOCKET) and got

an exception from EMA library:

Exception in thread "main" java.lang.ClassCastException: com.thomsonreuters.ema.access.HttpChannelConfig cannot be cast to com.thomsonreuters.ema.access.SocketChannelConfig
    at com.thomsonreuters.ema.access.ChannelCallbackClient.initialize(
    at com.thomsonreuters.ema.access.OmmConsumerImpl.initialize(
    at com.thomsonreuters.ema.access.OmmConsumerImpl.<init>(
    at com.thomsonreuters.ema.access.EmaFactory.createOmmConsumer(
    at com.trgr.discorch.electron.ElectronClient.<init>(
    at com.trgr.discorch.electron.ElectronClient.getInstance(
    at com.trgr.discorch.electron.Application.main(
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(
    at java.lang.reflect.Method.invoke(
    at com.intellij.rt.execution.application.AppMain.main(

According to the code

case 2:

we are really trying to cast HttpChannelConfig to SocketChannelConfig.

Example of EmaConfig.xml used in my client:

            <Name value="Channel_1"/>
            <!--<ChannelType value="ChannelType::RSSL_SOCKET"/>-->
            <ChannelType value="ChannelType::RSSL_HTTP"/>

            <!-- CompressionType is optional: defaulted to None                                            -->
            <!-- possible values: None, ZLib, LZ4                                                        -->
            <CompressionType value="CompressionType::None"/>
            <GuaranteedOutputBuffers value="5000"/>

            <!-- ConnectionPingTimeout is optional: defaulted to 30000                                    -->
            <ConnectionPingTimeout value="30000"/>
            <!-- TcpNodelay is optional: defaulted to 1                                                 -->
            <!-- possible values: 1 (tcp_nodelay option set), 0 (tcp_nodelay not set)                    -->
            <TcpNodelay value="1"/>
            <Host value="localhost"/>
            <Port value="14002"/>
            <XmlTraceToStdout value="1"/>
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

I have the same issue with emaj3.0.2.all.rrg from Electron Java SDK 1.0.5

45.2k 103 43 60

According to the information in the EMA Java configuration guide, EMA Java doesn't support RSSL_HTTP channel type. Currently, it only supports RSSL_SOCKET.

channeltype.png (30.9 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

45.2k 103 43 60

I got the same result. However, after commenting that line in EMA code, it works.

case com.thomsonreuters.upa.transport.ConnectionTypes.HTTP:

The interface will be set again after the switch command.


However, to make it work, you need to set TcpNodelay to 0.

	<TcpNodelay value="0"/>

In conclusion, this could be a bug in EMA Java so I will raise the issue to development team.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.