类路径中的Couchbase属性文件

问题描述:

我正在使用Tomcat与尝试连接到托管的couchbase实例的Java后端进行通信。我已经安装了的路径,我的config目录中../tomcat/Catalina/localhost/context.xml.default类路径中的Couchbase属性文件

<Parameter name="CONFIG_DIRECTORY" value="/opt/platform/conf" override="false"/> 

而且我已在../tomcat/bin/setenv.sh一个CLASSPATH PARAM

String initialNodes = RuntimeData.INSTANCE.getConfigurationValue("MYNODES"); 
    String bucketId = RuntimeData.INSTANCE.getConfigurationValue("MYBUCKET"); 
    System.out.println("Creating cluster for " + initialNodes); 
    try { 
     System.out.println("HOST INET ADDRESS : " + InetAddress.getByName(initialNodes)); 
    } catch (UnknownHostException e) { 
     System.out.println("UNKNOWN HOST EXCEPTION : " + initialNodes); 
    } 

    cluster = CouchbaseCluster.create(initialNodes.split(",")); 
    System.out.println("Creating bucket for " + bucketId); 
    bucket = cluster.openBucket(bucketId, 10, TimeUnit.SECONDS); 
    System.out.println("Creating graph."); 
    graph = new CBGraph(); 

在这段代码中我有一些调试日志记录,我可以证实,我做了initialNodes和拉正确的价值观:

CLASSPATH=/opt/platform/conf/ 

下面的代码片段,我有工作桶。当我尝试创建一个新的CBGraph()时,我的问题目前出现在最后一行。

我得到这个错误:

Caused by: com.couchbase.client.core.config.ConfigurationException: No valid node found to bootstrap from. Please check your network configuration. 

我的猜测是,不知何故属性文件,其中包含所有我couchbase服务器的连接信息的要么没有得到加载到类路径......或者是越来越比我需要的时间还晚。

我已经能够做到的将seasvath设置添加到setenv.sh的唯一验证是,一旦tomcat运行,我会在类路径中看到路径,如果我执行ps auxw | grep tomcat。

对这个问题的任何帮助是值得欢迎的。我已经看过其他一些帖子,但我不知道确切的问题,我试图解决这里除了我得到的错误。

此外:

望着INFO日志在运行时我可以验证包含我couchbase属性文件的目录中的类路径。但是...它看起来像couchbase尝试使用默认值(下面复制)

INFO: Using the following configuration ... 
Oct 24, 2016 3:08:09 PM com.couchbase.graph.conn.ConnectionFactory  createCon 
INFO: hosts = ubuntu-local 

您指定可能是无效的主机名(或IP地址)的地址,以初始化,而你也应该看到其中的一个INFO日志消息:

https://github.com/couchbase/couchbase-jvm-core/blob/4127377b8bd057ed291176d568a1e868796e4e5a/src/main/java/com/couchbase/client/core/message/cluster/SeedNodesRequest.java#L85-L102

+0

我应该打电话SeedNodesRequest?我认为我只是在做:cluster = CouchbaseCluster.create(initialNodes.split(“,”));与我的初始节点列表。 – Deslyxia

+0

是的,你可以像你显示的那样做,但是你可以显示initialNodes的样子吗?它们应该是DNS名称或IP地址 – avsej

+0

初始节点只是AWS节点的DNS名称。我只在一个加载...我想我可以加载更多。至于格式正确,如果我有一个名为我的集群中的节点:aws4-74-22-973-9.uk-east-9.compute.amazonaws(这是不正确的)是迄今为止的正确格式作为加载初始节点只是该主机名或我需要在它前面的“http”...或“.com”在结束等? – Deslyxia