ColdFusion 2016 и MongoDB 4.0.13 - PullRequest
       47

ColdFusion 2016 и MongoDB 4.0.13

1 голос
/ 22 января 2020

Я пытаюсь подключить ColdFusion 2016 (режим разработчика на локальной машине) к MongoDB 4.0.13 (сервер). Я установил mongodb-driver-core-3.8.2.jar, bson-3.8.2.jar и mongodb-driver-3.8.2.jar в свою папку lib. когда я пытаюсь запустить этот код, он никогда не подключается к Mon go, он выдает ошибку. Я не использую правильные драйверы?

Код:

<cfset uri  = CreateObject("java","com.mongodb.MongoClientURI").init("mongodb://wh-mongos-v01.shift4.com:27017")>
<cfset mongoClient  = CreateObject("java","com.mongodb.MongoClient").init(uri)>

<cffunction name="m" returntype="any">
    <cfargument name="value" type="any">
    <cfif IsJSON(arguments.value)>
        <cfset local.retrun = CreateObject("java","com.mongodb.util.JSON").parse(arguments.value)>
    <cfelse>
        <cfset local.retrun = CreateObject("java","com.mongodb.util.JSON").parse( SerializeJSON(arguments.value) )>
    </cfif>
    <cfreturn local.retrun>
</cffunction>

<cfset myDb = mongoClient.getDatabase("testingdb")>
<cfset myCollection = myDb.getCollection("testingcollection")>
<cfdump var="#myCollection.countDocuments()#">

Ошибка: истекло время ожидания через 30000 мс во время ожидания подключения. Клиентское представление состояния кластера: {тип = НЕИЗВЕСТНО, серверы = [{адрес = wh-mongodb-v01.xxxxx.com: 27017, тип = НЕИЗВЕСТНО, состояние = СОЕДИНЕНИЕ, исключение = {com.mongodb.MongoSocketReadException: преждевременно достигнут конец поток}}]

Ответы [ 2 ]

1 голос
/ 24 января 2020

Я понял это. Вот что ему нужно:

  • CF нужен только Mon go Legacy driver. поэтому я проверил матрицу совместимости и загрузил 3.12.1 последнюю версию устаревшего драйвера uber.
  • Проблема была с SSL, поэтому в понедельник go SSL включен, нам нужно использовать опцию SSL = True.

0 голосов
/ 23 января 2020

У вас есть узел MongoDB, работающий на wh-mongodb-v01.xxxxx.com на порту 27017? В любом случае лучше всего использовать строку URI подключения, где вы указываете несколько узлов набора реплик для обеспечения высокой доступности. В этом случае ваше соединение должно быть установлено с:

<cfset uri = CreateObject("java","com.mongodb.MongoClientURI").init("mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database.collection][?options]]/)>
<cfset mongoClient = CreateObject("java","com.mongodb.MongoClient").init(uri)>
...