2016-10-22 109 views
0

我正在使用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 

回答

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

+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