2012-10-22 5 views
4

J'ai installé eclipse, le plugin cloudfoundry, le plugin scala, le plugin vaadin (pour les développements web) et les bibliothèques mongodb.scala cloud foundry mongodb: accès à mongodb refusé

J'ai créé une classe comme ceci:

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!") 
     }) 
    } 
} 

l'erreur (l'accès à la base de données MongoDB est refusée) provient des paramètres, qui sont ceux par défaut. savez-vous comment configurer les bons paramètres en scala ou en java?

Répondre

0

Je suggère de le faire en utilisant Spring Data for MongoDB il y a un exemple d'application pour Cloudfoundry en particulier put together by the Spring guys. Avec un bit of xml configuration vous êtes prêt à injecter le mongoTemplate similaire au paradigme Spring xxxTemplate familier.

+0

bonjour merci pour votre réponse, mais si possible je voudrais éviter le printemps. – lolveley

+0

c'est plutôt étrange que dans le doc de cloudfoundry il soit impossible de trouver de telles informations en java au moins! – lolveley

0

lors du déploiement de CloudFoundry, les informations relatives à la connexion à un service (i.e. mongo dans votre cas) est mis à la disposition de l'application par VCAP_SERVICES variable d'environnement. C'est un document json avec une entrée par service. Vous pouvez bien sûr l'analyser vous-même, mais vous trouverez la classe http://cf-runtime-api.cloudfoundry.com/org/cloudfoundry/runtime/env/CloudEnvironment.html utile. Vous devrez ajouter le fichier org.cloudfoundry/cloudfoundry-runtime/0.8.1 à votre projet. Vous pouvez l'utiliser sans ressort.

Jetez un oeil à http://docs.cloudfoundry.com/services.html pour l'explication des VCAP_SERVICES sous-jacentes var

1

On dirait que vous avez obtenu l'aide sur la liste de diffusion 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())   
} 
Questions connexes