MongoSocketReadException when used Hibernate OGM with cloud MongoDB Atlas

Description

I was asked this question on https://stackoverflow.com/questions/54487413/usage-of-hibernate-ogm-with-cloud-mongodb-atlas-m0-free-tier/54532599#54532599

I am trying to use MongoDB Atlas M0 (Free Tier) for my JAVA EE application, now I am using:

  • Local MongoDB database (v4.0.4)

  • Hibernate Core "hibernate-core 5.3.6.Final"

  • Hibernate OGM "hibernate-ogm-mongodb 5.3.1.Final"

  • Java application server WildFly 15.0.0.Final

When I tried to connect Hibernate with Mongo Atlas to test cloud database, I am was not able to have a working connection, because mongodb driver throws an exception com.mongodb.MongoSocketReadException: Prematurely reached end of stream

My persistence.xml that causes the error:

As @Davide D'Alto suggested I create Factory to interact for the persistence unit

Environment

None

Activity

Show:
Davide D'Alto
February 5, 2019, 5:02 PM

Sorry, I cannot understand form the description... Are you saying that using that the creations of a custom `MongoDBDatastoreProvider` that uses `MongoClients.create(...)` worked for you? Thanks

name surname
February 5, 2019, 5:09 PM

Hi Davide!
I am now on it, trying to use 'MYCustomMongoDBDatastoreProvider' like you suggested to me! I am not very familiar with this kind of using of connection, that's why it takes a bit of time for me. Thank you for your help!

Davide D'Alto
February 5, 2019, 5:23 PM

Sure, make sure once you have created the class to change this property:

to something like this:

name surname
February 5, 2019, 7:07 PM
Edited

yeah, got it! And then I've created this class MYCustomMongoDBDatastoreProvider and then overrode createMongoClient and tried create MongoClient just simple like this to connect to one node:

or this to connect to the cluster of 3 nodes:

But nothing changed, like before I was received the same error:

name surname
February 5, 2019, 9:38 PM

Hi Davide!
I was investigating a little bit more a I believe I found the problem. Finally I was able to make connection from my own MYCustomMongoDBDatastoreProvider (that you suggested me) only with make a connection with MongoClientOptions option sslEnabled(true), to do this I should create MongoClient and pass to it all options and configs like this:

So without sslEnabled(true) I had the same error as before, but with it works fine.

And I also found this issue https://github.com/metabase/metabase/issues/6678 where people had the same problems and as I was able to understand, they spoke about SSL problem too.

In fact here https://docs.atlas.mongodb.com/driver-connection/ - "Connect via Driver" there is Prerequisites:

I can't do objective conclusions, but may be this error is throws by lack of implementation SSL.

Assignee

Unassigned

Reporter

name surname

Labels

None

Feedback Requested

None

Feedback Requested By

None

backPortable

None

Suitable for new contributors

None

Pull Request

None

backportDecision

None

backportReEvaluate

None

Components

Affects versions

Priority

Major
Configure