2014-07-15 37 views
2

我正在使用1.4.3版本的Java客户端,并试图连接到Couchbase服务器,我在本地运行但是出现身份验证错误。在仔细查看他们的客户端库如何在他们的类中使用变量的代码(不是开放源码很好?)之后,我得出结论,如果我想能够连接到我有的“桶”为具有与该存储桶相同的用户名的每个“存储桶”创建一个用户。这对我来说没有意义。我必须错了。我不是吗?必须有另一种方式。那是什么?在Couchbase中查看视图,Java客户端

供参考,在这里是我用什么来创建连接(这是斯卡拉,但看起来几乎相同的在Java中):

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

直接从他们的examples如下。

他们的代码

如果我看着他们连接到“查看”本身我看到下面的其中代码:

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

,然后传递给constructor

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

user变量是在HTTP基本认证实际上用于形成Authentica头标题。那user变量当然相当于CouchbaseConnectionFactory中的bucket变量。

回答

1

您是对的 - 每个存储桶都应该使用存储桶名称作为用户进行认证。但是,没有任何用户需要“创建” - 只需使用在群集界面上创建存储桶时设置的任何(存储桶)名称和密码即可。

请注意,人们通常每个应用程序使用一个存储桶(不要认为存储桶==表,认为存储桶==数据库),所以对于大多数应用程序,通常不需要超过几个存储桶。

相关问题