Discover Refinitiv
MyRefinitiv Refinitiv Perspectives Careers
Created with Sketch.
All APIs Questions & Answers  Register |  Login
Ask a question
  • Questions
  • Tags
  • Badges
  • Unanswered
Search:
  • Home /
  • Elektron /
  • EMA /
avatar image
Question by dhruv.arora · Jul 14, 2020 at 01:37 PM · elektronrefinitiv-realtimeelektron-sdkrrtema-apielektron-message-apierror

org.apache.http.client.ClientProtocolException Java API

Hi I am trying to run an example (example450__MarketPrice__QueryServiceDiscovery) and facing an error

in serviceDiscovery.registerClient

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/ClientProtocolException

at com.thomsonreuters.upa.valueadd.reactor.RestClient.<init>(RestClient.java:62)

at com.thomsonreuters.upa.valueadd.reactor.Reactor$1.<init>(Reactor.java:971)

at com.thomsonreuters.upa.valueadd.reactor.Reactor.createRestClient(Reactor.java:970)

at com.thomsonreuters.upa.valueadd.reactor.Reactor.initRestClientForQueryServiceDiscovery(Reactor.java:1057)

at com.thomsonreuters.upa.valueadd.reactor.Reactor.queryServiceDiscovery(Reactor.java:932)

at com.thomsonreuters.ema.access.ServiceEndpointDiscoveryImpl.registerClient(ServiceEndpointDiscoveryImpl.java:192)

at com.thomsonreuters.ema.access.ServiceEndpointDiscoveryImpl.registerClient(ServiceEndpointDiscoveryImpl.java:99)

at testSample.Consumer.main(Consumer.java:293)

Caused by: java.lang.ClassNotFoundException: org.apache.http.client.ClientProtocolException

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

... 8 more


I have the following code, which reads machineid/userName, password,clientid, keyfile and keypasswd. I have these vales stored in config.properties files

static boolean readCommandlineArgs(String[] args, OmmConsumerConfig config)

{

try

{

int argsCount = 0;

Consumer cons = new Consumer();

Properties properties = new Properties();

InputStream fs = cons.getClass().getClassLoader().getResourceAsStream("config.properties"); //new InputStreamReader("config.properties");

properties.load(fs);

userName = properties.getProperty("userName");

password = properties.getProperty("password");

clientId = properties.getProperty("clientId");

config.tunnelingKeyStoreFile(properties.getProperty("keyfile"));

config.tunnelingKeyStorePasswd(properties.getProperty("keypasswd"));

if ( userName == null || password == null || clientId == null)

{

System.out.println("Username, password, and clientId must be specified on the command line. Exiting...");

printHelp();

return false;

}

}

catch (Exception e)

{

printHelp();

return false;

}

return true;

}

And my properties file is like this

userName=GE-A-11111111-1-1111

password=NWfcW@g)>(Q[abcd_2(RdRmY#QhsN`/r/f9^~8.)q<&j9<Q<z3

clientId=2a93d054b1cd4f00a7b12345c5ee890a2ad7b18b

keyfile=c:\\KeyStore\\local.keystore

keypasswd=abcd123@

Can anybody help in fixing this issue?

Thanks

People who like this

0 Show 0
Comment
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

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

6 Replies

  • Sort: 
avatar image
REFINITIV
Best Answer
Answer by wasin.w · Jul 17, 2020 at 03:59 AM

Hello @dhruv.arora

I can replicate the issue in Eclipse IDE by manual adding the jar files library. I found the that the EMA Java application also requires the following jar files library:

  • json-20180130.jar
  • httpclient-4.5.3.jar
  • httpclient-cache-4.5.3.jar
  • httpcore-4.4.12.jar
  • httpcore-nio-4.4.12.jar
  • httpmime-4.5.3.jar

The above jar files are available at <Elektron-SDK>\Elektron-SDK-BinaryPack\Java\Eta\Libs\ApacheClient <Elektron-SDK>\Elektron-SDK-BinaryPack\Java\Eta\Libs folders.

After I added the above jar files, I can run example 450 successfully.

By the way, I always prefer using Apache Maven to handle EMA Java dependency for the application instead of manual add jar files.


ema-result.png (97.1 KiB)
Comment
dhruv.arora

People who like this

1 Show 1 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

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

avatar image
dhruv.arora · Jul 17, 2020 at 01:47 PM 0
Share

Thank you very much Wasin. It worked very well. Thanks again

avatar image
REFINITIV
Answer by umer.nalla · Jul 14, 2020 at 02:15 PM

Hi @dhruv.arora

A few points:

  1. Can you confirm if the example works fine if you use the command line before you made the changes to use your properties file?
  2. I can see in the snippet above that you are populating the OmmConsumerConfig with the values you read from your file, but I can't see how that is then used subsequently in the remainder of the OmmConsumer initialising and startup code.
  3. Also, it is not clear if the credential values are being correctly passed to the serviceDiscovery.registerClient() as well

Assuming the unmodified example works, I would recommend you revert your code changes to the most basic i.e. replacing the readCommandlineArgs function to read from your properties file rather than the command line and no other changes (e.g. you are creating a Consumer instance which is at least one difference I can see). Verify that works and then make incremental changes. This should help you identify any possible issues with your code changes.


Comment
dhruv.arora

People who like this

1 Show 0 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

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

avatar image
Answer by dhruv.arora · Jul 14, 2020 at 11:59 PM

Hi @Umer Nalla


I am getting the following error when trying to execute from the command prompt

A problem occurred evaluating root project

Could not set unknown property 'mainClass' for extension 'application' of type org.gradle.api.plugins.internal.DefaultJavaApplication.


Can you please help me? I have been struggling to execute the example for last 2 days.

Thanks, Dhruv


Comment

People who like this

0 Show 0 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

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

avatar image
REFINITIV
Answer by wasin.w · Jul 15, 2020 at 03:16 AM

Hello @dhruv.arora

I can run the EMA Java Consumer450 with the following steps:

  1. In the <ESDK Java>/Java folder, run gradlew.bat jar command
  2. Once gradle download all dependencies and build the library success, run gradlew.bat Ema:Examples:tasks --all command
  3. Then run EMA Java Consumer450 with the following command
.\gradlew.bat runconsumer450 --args='-username GE-A-XXXXX -password password -clientId clientid -keyfile C:\keystores\keystore.jks -keypasswd keypasswd'

Note: My environment is Windows 10, Oracle JDK 1.8.0 update 241 and Gradle 6.2.2.

Did you run gradlew jar and gradlew Ema:Examples:tasks --all commands yet?

Could you please give me your environment detail such as OS, JDK version and Gradle version?

Which command that returns Could not set unknown property 'mainClass' ... error message?

Comment
dhruv.arora

People who like this

1 Show 0 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

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

avatar image
Answer by dhruv.arora · Jul 15, 2020 at 04:02 PM

Hi @Wasin Waeosri

I followed the instructions given by you and was able to execute the example and no more facing any error. When I executed the command

\gradlew.bat runconsumer450 --args='-username GE-A-XXXXX -password password -clientId clientid -keyfile C:\keystores\keystore.jks -keypasswd keypasswd' with my credentials

I started seeing the various services(9 in total) like the following one but also seeing a lot of error messages (please see in bold below). I can't see any market price information for "IBM.N"

I am using Gradle 6.5.1 and Java version is "1.8.0_251" on Windows 10.

Service :

Provider : aws

Transport : tcp

Endpoint : amer-2.pricing.streaming.edp.thomsonreuters.com

Port : 14002

Data Format : rwf

Location : us-east-1b

Jul 15, 2020 10:48:37 AM com.thomsonreuters.ema.access.ChannelCallbackClient reactorChannelEventCallback

INFO: loggerMsg

ClientName: ChannelCallbackClient

Severity: Info

Text: Received ChannelUp event on channel Channel_1

Instance Name Consumer_1_1

Component Version ads3.2.1.L1.linux.tis.rrg 64-bit

loggerMsgEnd

StatusMsg

streamId="5"

domain="MarketPrice Domain"

state="Closed / Suspect / Not entitled / 'Access Denied: User req to PE(62)'"

name="IBM.N"

nameType="1"

serviceId="257"

serviceName="ELEKTRON_DD"

StatusMsgEnd

Jul 15, 2020 10:52:36 AM com.thomsonreuters.ema.access.ChannelCallbackClient reactorChannelEventCallback

WARNING: loggerMsg

ClientName: ChannelCallbackClient

Severity: Warning

Text: Received Channel warning event on channel Channel_1

Instance Name Consumer_1_1

RsslReactor @4b86d968

RsslChannel @589a880b

Error Id 0

Internal sysError 0

Error Location Reactor.processWorkerEvent

Error text Failed REST request from HTTP status code 400 for user: GE-A-01444311-3-2480. Text: {"error_description":"iPlanet session has been expired.","error":"access_denied"}

loggerMsgEnd

Jul 15, 2020 10:56:42 AM com.thomsonreuters.ema.access.ChannelCallbackClient reactorChannelEventCallback

WARNING: loggerMsg

ClientName: ChannelCallbackClient

Severity: Warning

Text: Received Channel warning event on channel Channel_1

Instance Name Consumer_1_1

RsslReactor @4b86d968

RsslChannel @589a880b

Error Id 0

Internal sysError 0

Error Location Reactor.processWorkerEvent

Error text Failed REST request from HTTP status code 400 for user: GE-A-01444311-3-2480. Text: {"error_description":"iPlanet session has been expired.","error":"access_denied"}

loggerMsgEnd

Jul 15, 2020 11:00:48 AM com.thomsonreuters.ema.access.ChannelCallbackClient reactorChannelEventCallback

WARNING: loggerMsg

ClientName: ChannelCallbackClient

Severity: Warning

Text: Received Channel warning event on channel Channel_1

Instance Name Consumer_1_1

RsslReactor @4b86d968

RsslChannel @589a880b

Error Id 0

Internal sysError 0

Error Location Reactor.processWorkerEvent

Error text Failed REST request from HTTP status code 400 for user: GE-A-01444311-3-2480. Text: {"error_description":"iPlanet session has been expired.","error":"access_denied"}

loggerMsgEnd

Jul 15, 2020 11:03:39 AM com.thomsonreuters.ema.access.ChannelDictionary processCallback

WARNING: loggerMsg

ClientName: ChannelDictionary

Severity: Warning

Text: RDMDictionary stream was closed with status message

streamId 3

Reason State: Closed/Suspect/None - text: "Login stream was closed."

loggerMsgEnd

Jul 15, 2020 11:03:39 AM com.thomsonreuters.ema.access.ChannelDictionary processCallback

WARNING: loggerMsg

ClientName: ChannelDictionary

Severity: Warning

Text: RDMDictionary stream was closed with status message

streamId 4

Reason State: Closed/Suspect/None - text: "Login stream was closed."

loggerMsgEnd

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.

Use '--warning-mode all' to show the individual deprecation warnings.

See https://docs.gradle.org/5.4.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 15m 17s

11 actionable tasks: 2 executed, 9 up-to-date

Thanks

Dhruv

Comment

People who like this

0 Show 2 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

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

avatar image
REFINITIV
wasin.w ♦♦ · Jul 16, 2020 at 03:03 AM 1
Share

Hello @dhruv.arora

The example 450 subscribes "IBM.N" item (RIC) by default. The "Closed / Suspect / Not entitled / 'Access Denied: User req to PE(62)'" error message means you do not have a permission to subscribe IBM.N item.

You can change the RIC name in Example 450 Consumer.java file line:

consumer.registerClient(EmaFactory.createReqMsg().serviceName("ELEKTRON_DD").name("IBM.N"), appClient);

Then rebuild the project and re-run the application.

avatar image
dhruv.arora wasin.w ♦♦ · Jul 16, 2020 at 02:46 PM 0
Share

Hi Wasin, thanks, it worked with another RIC

avatar image
Answer by dhruv.arora · Jul 15, 2020 at 05:01 PM

Hi @Umer Nalla


I followed Wasin Waeosri's instructions and was able to connect to service and execute the example consumer450 from the command line

but when tried to execute the example using code in eclipse (gave the same credentials), I come across the same error like the below

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/ClientProtocolException

at com.thomsonreuters.upa.valueadd.reactor.RestClient.<init>(RestClient.java:62)

at com.thomsonreuters.upa.valueadd.reactor.Reactor$1.<init>(Reactor.java:971)

at com.thomsonreuters.upa.valueadd.reactor.Reactor.createRestClient(Reactor.java:970)

at com.thomsonreuters.upa.valueadd.reactor.Reactor.initRestClientForQueryServiceDiscovery(Reactor.java:1057)

at com.thomsonreuters.upa.valueadd.reactor.Reactor.queryServiceDiscovery(Reactor.java:932)

at com.thomsonreuters.ema.access.ServiceEndpointDiscoveryImpl.registerClient(ServiceEndpointDiscoveryImpl.java:192)

at com.thomsonreuters.ema.access.ServiceEndpointDiscoveryImpl.registerClient(ServiceEndpointDiscoveryImpl.java:99)

at EMAConsumer.Consumer.main(Consumer.java:306)

Caused by: java.lang.ClassNotFoundException: org.apache.http.client.ClientProtocolException

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

... 8 more


when the code comes at "serviceDiscovery.registerClient" as mentioned in my original question also before. Although, I am using the same credentials which I used to execute from the command line. Can you please help me with this error?


Thanks

Dhruv

Comment

People who like this

0 Show 2 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

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

avatar image
REFINITIV
wasin.w ♦♦ · Jul 16, 2020 at 02:55 AM 0
Share

Hello @dhruv.arora

Do you manual add the ESDK library files to the Eclipse project? Beside the ema-<version>.jar, upa-<version>.jar and upaValueAdd-<version>.jar files, the EMA Java application also requires the following jar files dependency:

  • commons-collections-3.2.2.jar
  • commons-configuration-1.10.jar
  • commons-lang-2.6.jar
  • commons-logging-1.2.jar
  • slf4j-api-1.7.12.jar
  • slf4j-jdk14-1.7.12.jar

The above files are available at <Elektron-SDK>\Elektron-SDK-BinaryPack\Java\Ema\Libs folder.

avatar image
dhruv.arora wasin.w ♦♦ · Jul 16, 2020 at 03:32 PM 0
Share

Hi @Wasin Waeosri,

I am using the following jars in the example code in eclipse

commons-collections-3.2.2.jar, commons-configuration-1.10.jar, commons-lang-2.6.jar, commons-logging-1.2.jar, ema-3.5.0.0.jar, ema-3.5.0.0-javadoc.jar, httpcore-4.4.12.jar, httpcore-nio-4.4.12.jar, slf4j-api-1.7.12.jar, slf4j-jdk14-1.7.12.jar, upa-3.5.0.0.jar, upaValueAdd-3.5.0.0.jar

I am using the same credentials which I used to run the example from command prompt but the code throws error when calling method serviceDiscovery.registerClient". In this method, username (which is the machineid), password and clientId are the mandatory inputs and other inputs like proxyHostName, proxyPort,proxyUserName, proxyPassword,proxyDomain and proxyKrb5Configfile can remain null.

I am getting the following error:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/ClientProtocolException

at com.thomsonreuters.upa.valueadd.reactor.RestClient.<init>(RestClient.java:62)

at com.thomsonreuters.upa.valueadd.reactor.Reactor$1.<init>(Reactor.java:971)

I have uploaded the file in text as here it was not taking file with java extension.

Consumer.txt

Using the values in config.properties

userName=GE-A-01111111-3-1111

password=NPcnS@g)>(Q[trBU_2(EkLOY#QhsN`/r/f9^~8.)q<&a7<Q<c8

clientId=2a93d054b1cd4f00a7b60231c5ee901a3ad7b18b

keyfile=c:\\KeyStore\\dhruv_keystore.jks

keypasswd=pass1234@

Thanks a lot,

Dhruv

consumer.txt (11.8 KiB)

Watch this question

Add to watch list
Add to your watch list to receive emailed updates for this question. Too many emails? Change your settings >
8 People are following this question.

Related Questions

Getting -> Error text Error initializing channel: errorId=-1 text=Error occurred during connection process. Can you please help me

EMA C++ error Attempt to submit using a registered handle

Login Domain - Components and Elements in Login responses

Migrating from sfc to EMA, NoDictionary errorcode.

Getting error While fetching rates through LPC, Unable to open or read specified input file

  • Copyright
  • Cookie Policy
  • Privacy Statement
  • Terms of Use
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Alpha
  • App Studio
  • Block Chain
  • Bot Platform
  • Connected Risk APIs
  • DSS
  • Data Fusion
  • Data Model Discovery
  • Datastream
  • Eikon COM
  • Eikon Data APIs
  • Electronic Trading
    • Generic FIX
    • Local Bank Node API
    • Trading API
  • Elektron
    • EMA
    • ETA
    • WebSocket API
  • Intelligent Tagging
  • Legal One
  • Messenger Bot
  • Messenger Side by Side
  • ONESOURCE
    • Indirect Tax
  • Open Calais
  • Open PermID
    • Entity Search
  • Org ID
  • PAM
    • PAM - Logging
  • ProView
  • ProView Internal
  • Product Insight
  • Project Tracking
  • RDMS
  • Refinitiv Data Platform
    • Refinitiv Data Platform Libraries
  • Rose's Space
  • Screening
    • Qual-ID API
    • Screening Deployed
    • Screening Online
    • World-Check One
    • World-Check One Zero Footprint
  • Side by Side Integration API
  • TR Knowledge Graph
  • TREP APIs
    • CAT
    • DACS Station
    • Open DACS
    • RFA
    • UPA
  • TREP Infrastructure
  • TRKD
  • TRTH
  • Thomson One Smart
  • Transactions
    • REDI API
  • Velocity Analytics
  • Wealth Management Web Services
  • Workspace SDK
    • Element Framework
    • Grid
  • World-Check Data File
  • 中文论坛
  • Explore
  • Tags
  • Questions
  • Badges