2014-07-15 4 views
2

J'utilise la version 1.4.3 du client Java et j'essaie de me connecter au serveur Couchbase que j'ai exécuté localement mais je reçois des erreurs auth. Après avoir parcouru le code (n'est pas open source génial?) De la façon dont leur bibliothèque client utilise les variables parmi leurs classes, je suis arrivé à la conclusion que si je veux être en mesure de me connecter à un "seau" que j'ai pour créer un utilisateur pour chaque "compartiment" avec le même nom d'utilisateur que ce compartiment. Cela n'a aucun sens pour moi. Je dois me tromper. Ne suis-je pas? Il doit y avoir un autre moyen. Qu'est-ce que c'est?Interrogation des vues dans Couchbase, Client Java

Pour référence, voici ce que j'utilise pour créer une connexion (il est Scala mais regarderais presque identique en Java):

val cf = new CouchbaseConnectionFactoryBuilder() 
    .setViewTimeout(opTimeout) 
    .setViewWorkerSize(workerSize) 
    .setViewConnsPerNode(conPerNode) 
    .buildCouchbaseConnection(nodes, bucket, password) 
new CouchbaseClient(cf) 

qui découle directement de leur examples.

Leur code

Si je regarde dans le code dans lequel ils se connectent à la « vue » lui-même, je vois ce qui suit:

public ViewConnection createViewConnection(
    List<InetSocketAddress> addrs) throws IOException { 
    return new ViewConnection(this, addrs, bucket, pass); 
} 

qui est ensuite transmis à un constructor:

public ViewConnection(final CouchbaseConnectionFactory cf, 
         final List<InetSocketAddress> seedAddrs, final String user, 
         final String password) //more code... 

et cette variable est user effectivement utilisé dans le HTTP Basic Auth pour former le Authentica en-tête. Cette variable user étant, bien sûr, équivalente à la variable bucket dans le CouchbaseConnectionFactory.

Répondre

1

Vous avez raison: chaque compartiment doit être authentifié avec le nom du compartiment en tant qu'utilisateur. Cependant, il n'y a pas d'utilisateurs à 'créer' - vous utilisez simplement le nom (seau) et le mot de passe que vous avez configurés lorsque vous avez créé le compartiment sur l'interface utilisateur du cluster. Notez que les utilisateurs utilisent généralement un seul compartiment par application (ne pensez pas bucket == table, think bucket == base de données) et vous n'avez donc généralement pas besoin de plus d'un ou deux compartiments pour la plupart des applications.

Questions connexes