【问题标题】:scala cloud foundry mongodb : access to mongodb deniedscala cloud Foundry mongodb:访问mongodb被拒绝
【发布时间】:2012-10-22 20:10:00
【问题描述】:

我已经安装了 eclipse、cloudfoundry 插件、scala 插件、vaadin 插件(用于 web 开发)和 mongodb 库。

我创建了一个这样的类:

import vaadin.scala.Application
import vaadin.scala.VerticalLayout
import com.mongodb.casbah.MongoConnection
import com.mongodb.casbah.commons.MongoDBObject
import vaadin.scala.Label
import vaadin.scala.Button

class Launcher extends Application {

   val label=new Label

   override def main = new VerticalLayout() {

      val coll=MongoConnection()("mybd")("somecollection")

      val builder=MongoDBObject.newBuilder
      builder+="foo1" -> "bar"
      var newobj=builder.result()
      coll.save(newobj)

      val mongoColl=MongoConnection()("mybd")("somecollection")

      val withFoo=mongoColl.findOne()

      label.value=withFoo
      add(label)

      //bouton pour faire joli
      add(new Button{
        caption_=("click me!")
      })
   }
}

错误(对mongodb数据库的访问被拒绝)来自参数,这是默认的。 你知道如何在scala或java中设置好的参数吗?

【问题讨论】:

    标签: scala mongodb cloud-foundry


    【解决方案1】:

    看起来你在vcap-dev 邮件列表上得到了一些帮助

    package com.example.vaadin_1
    
    import vaadin.scala.Application
    import org.cloudfoundry.runtime.env.CloudEnvironment
    import org.cloudfoundry.runtime.env.MongoServiceInfo
    import com.mongodb.casbah.MongoConnection
    
    
    class Launcher extends Application {
    
       val cloudEnvironment = new CloudEnvironment()
       val mongoServices = cloudEnvironment.getServiceInfos(classOf[MongoServiceInfo])
       val mongo = mongoServices.get(0)
       val mongodb = MongoConnection(mongo.getHost(), mongo.getPort())("abc")
       mongodb.authenticate(mongo.getUserName(),mongo.getPassword())           
    }
    

    【讨论】:

      【解决方案2】:

      我建议使用Spring Data for MongoDB 进行此操作,这里有一个 Cloudfoundry 示例应用程序,尤其是put together by the Spring guys。使用bit of xml configuration,您已经准备好注入类似于熟悉的 Spring xxxTemplate 范例的 mongoTemplate。

      【讨论】:

      • 你好,谢谢你的回答,但如果可能的话,我想避免春天。
      • 很奇怪,在cloudfoundry的文档中至少在java中是不可能找到这样的信息的!
      【解决方案3】:

      部署到 CloudFoundry 时,通过环境变量 VCAP_SERVICES 向应用程序提供与连接到服务(在您的情况下为 mongo)相关的信息。它是一个 json 文档,每个服务有一个条目。您当然可以自己解析它,但您会发现 http://cf-runtime-api.cloudfoundry.com/org/cloudfoundry/runtime/env/CloudEnvironment.html 类很有用。您需要将 org.cloudfoundry/cloudfoundry-runtime/0.8.1 jar 添加到您的项目中。你可以在没有 Spring 的情况下使用它。

      查看http://docs.cloudfoundry.com/services.html 以了解 VCAP_SERVICES 底层 var 的说明

      【讨论】:

        猜你喜欢
        • 2014-08-02
        • 2021-03-20
        • 1970-01-01
        • 2017-11-16
        • 1970-01-01
        • 2011-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多