【问题标题】:ColdFusion 2016 and MongoDB 4.0.13ColdFusion 2016 和 MongoDB 4.0.13
【发布时间】:2020-05-08 02:14:34
【问题描述】:

我正在尝试将 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 文件夹中。当我尝试运行此代码时,它永远不会连接到 Mongo,它会出错。我没有使用正确的驱动程序吗?

代码:

<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 毫秒后超时。集群状态的客户端视图是 {type=UNKNOWN, servers=[{address=wh-mongodb-v01.xxxxx.com:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely达到end of流}}]

【问题讨论】:

    标签: mongodb coldfusion coldfusion-2016 coldfusion-2018 mongodb4.0


    【解决方案1】:

    我想通了。这是它需要的:

    • CF 只需要 Mongo Legacy 驱动程序。所以我检查了兼容性 矩阵并加载了 3.12.1 最新的 uber 旧版驱动程序。
    • 问题出在 SSL 上,所以 Mongo 开启了 SSL,我们需要使用 SSL=True 选项。

    【讨论】:

      【解决方案2】:

      您是否有一个运行在wh-mongodb-v01.xxxxx.com 端口27017 上的MongoDB 节点?在任何情况下,最好的选择是使用Connection 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)>
      

      【讨论】:

      • 感谢您的回复,Nic,它也没有工作。我可以远程登录到 27017 上的节点。MongoDB 已打开,没有设置用户名或密码。
      • Also Nic,你能告诉我所有的 JAR 需要什么吗?我刚刚安装了旧版 Java JAR。
      • 3.8.2 Java 驱动程序应该与服务器 4.0 一起使用,但我建议升级到 3.12.2 并将 JAR 放入您的 CF 类路径中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 2018-02-03
      • 2018-05-15
      • 1970-01-01
      • 2023-03-15
      • 2021-04-07
      相关资源
      最近更新 更多