2016-10-22 4 views
0

Im работает с бэкэнд Java с использованием Tomcat и пытается подключиться к размещенному экземпляру couchbase. У меня есть настройка вверх по пути в мой каталог конфигурации в ../tomcat/Catalina/localhost/context.xml.defaultФайл свойств Couchbase в пути к классам

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

Также я установил CLASSPATH параметров в ../tomcat/bin/setenv.sh

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 и тому ведро. Моя проблема в настоящее время входит в последнюю строку, когда я пытаюсь создать новый 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 IS в пути к классам. НО ... похоже couchbase пытается инициализировать с использованием значений по умолчанию (скопированные ниже)

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

ответ

0

The АДРЕС вы уточняющие не могут быть действительными хостами (или 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

Исходные узлы - это просто имена DNS для узлов AWS. Я загружаю только один ... Думаю, я мог бы загрузить больше. Что касается правильного форматирования, если у меня есть узел, названный в моем кластере: aws4-74-22-973-9.uk-east-9.compute.amazonaws (это, кстати, не реально) - правильное форматирование как загружать начальные узлы только это имя хоста или мне нужно «http» перед ним ... или «.com» в конце и т. д.? – Deslyxia