类路径中的Couchbase属性文件

时间:2016-10-22 04:36:29

标签: java tomcat classpath couchbase

我正在使用Tomcat使用Java后端并尝试连接到托管的couchbase实例。我在../ tomcat / Catalina / localhost / context.xml.default

中设置了我的config目录的路径
<Parameter name="CONFIG_DIRECTORY" value="/opt/platform/conf" override="false"/>

我也在../ tomcat / bin / setenv.sh中设置了一个CLASSPATH参数

CLASSPATH=/opt/platform/conf/

以下是我正在处理的代码片段:

    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和bucket提取了正确的值。当我尝试创建一个新的CBGraph()时,我的问题出现在最后一行。

我收到此错误:

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

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

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

欢迎任何有关此问题的帮助。我看了一些其他的帖子,但我不确定我试图在这里解决的问题,除了我得到的错误。

此外:

在运行时查看INFO日志我可以验证包含我的couchbase .properties文件的目录是否在类路径中。但是......看起来像是使用默认值(在下面复制)下,couchbase正在尝试初始化

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

1 个答案:

答案 0 :(得分:0)

您指定的地址可能不是有效的主机名(或IP地址),您还应该看到其中一条INFO日志消息:

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