2016-09-27 31 views
0

我試圖從JNDI讀取定位器主機和端口信息,其值爲格式host [port],host2 [port2]。Spring Data Gemfire - 從JNDI讀取定位器

<jee:jndi-lookup id="locatorsJndi" jndi-name="locators/locator1" /> 
<gfe:pool id="locatorPool" locators="#{locatorsJndi}"> 

看來Spring Data gemfire在這種情況下無法正確識別定位器。它將JNDI查找的值字符串作爲一個主機並在末尾添加端口10334。

Unable to connect to any locators in the list [**host[10334],host2[10334]**:10334]; nested exception is com.gemstone.gemfire.cache.client.NoAvailableLocatorsException: 

但是,如果我傳遞主機和端口值作爲locators屬性的一部分,如下所示,它按預期工作。

<gfe:pool id="locatorPool" locators="host1[port1],host2[port2]"> 

這是Spring Data Gemfire中的一個問題嗎?

回答

0

無法連接到列表中的 「host[10334],host2[10334]:10334]」 任何定位器;

來自堆棧跟蹤消息的主機/端口,逗號分隔字符串不正確。

我收集您的JNDI上下文中GemFire定位器的配置正確指定爲...「host[10334],host2[10334]」?

如果是這樣,那麼這可以歸結爲一個簡單的事實春數據的GemFire不正確,或者更確切地說,目前,處理在<gfe:pool> XML命名空間元素基於bean定義的locatorsservers屬性規劃環境地政司表達式。

它,然而,處理財產的佔位符,如...

<gfe:pool id="locatorsPool" locators="${app.gemfire.locators}"/> 

這是一個相當漫長和複雜的解釋理解爲什麼當前的行爲是它是什麼,但可以肯定這可以改進。所以,我已經提交了SGF-535

注:我在PoolParser固定的類似問題,當與locatorsservers屬性在SGF-433被指定屬性的佔位符。

要解決此問題,您可以執行下列操作...

<jee:jndi-lookup id="locatorsJndi" jndi-name="locators/locator1"/> 

<util:properties id="applicationProperties"> 
    <prop key="locators">#{locatorsJndi}</prop> 
</util:properties> 

<context:property-placeholder properties-ref="applicationProperties"/> 

<gfe:pool id="locatorPool" locators="${locators}"/> 

按照SGF-535對我的最新進展。

很抱歉給您帶來不便,

約翰

+0

感謝John的快速回復。我嘗試了你的工作。我現在正在跟蹤錯誤。它沒有說明爲什麼它無法創建locatorPool。引起:java.lang.IllegalStateException:連接池「locatorPool」尚未創建。 – nageshb20

+0

嗨@ nagesh20-你可以更新你的貼子並粘貼新的例外嗎?我給你的代碼片段應該沒有發生任何事情。 –

+0

只是一個更新......我解決了/完成了SGF-535(https://jira.spring.io/browse/SGF-535)。此外,SD團隊明天將發佈SDG 1.7.6.RELEASE(Gosling SR6)和SDG 1.8.4.RELEASE(Hopper SR4),並且SGF-535的更改將在這些版本中發佈。希望你使用的是1.7.x或1.8.x.如果不是,我建議您升級給定SDG 1.6和更早版本不再受支持。如果您有其他問題或意見,請告訴我。乾杯! –

0

由於潛在的例外是NoAvailableLocatorsException,請嘗試連接到gfsh的定位器以查看是否成功?

gfsh>connect --locator=host1[port1] 
+0

我懷疑,因爲他說,定位器都很好......「但是,如果我通過主機和端口值作爲定位器的一部分,它是按預期工作。 「我可以看到定位符字符串不正確。現在添加更多答案。 –

相關問題