Spring Data Gemfire - 从 JNDI 读取定位器
Spring Data Gemfire - Reading locators from JNDI
我正在尝试从 JNDI 读取定位器主机和端口信息,其值的格式为 host[port],host2[port2]。
<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:
但是,如果我将主机和端口值作为定位器属性的一部分传递如下,它会按预期工作。
<gfe:pool id="locatorPool" locators="host1[port1],host2[port2]">
这是 Spring Data Gemfire 中的问题吗?
由于底层异常是 NoAvailableLocatorsException
,请您尝试连接到来自 gfsh
的定位器,看看是否成功?
gfsh>connect --locator=host1[port1]
Unable to connect to any locators in the list "host[10334],host2[10334]:10334]
";
堆栈跟踪消息中的 host/port,以逗号分隔的字符串不正确。
我收集到你的 JNDI 上下文中的 GemFire 定位器配置正确指定为...“host[10334],host2[10334]
”?
如果是这样,那么这归结为一个简单的事实,即 Spring Data GemFire 没有正确地,或者更确切地说,目前没有处理 [=14] 中的 SpEL 表达式=] 和 servers
<gfe:pool>
XML 命名空间元素基于 bean 定义的属性。
但是,它确实处理 Spring 属性 占位符,如...
<gfe:pool id="locatorsPool" locators="${app.gemfire.locators}"/>
理解当前行为的原因是一个相当长且复杂的解释,但肯定可以改进。所以,我提交了 SGF-535.
NOTE: I fixed a similar issue in the PoolParser
when property placeholders were specified with the locators
and servers
attributes in 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 了解我的最新进展。
抱歉给您带来不便,
约翰
我正在尝试从 JNDI 读取定位器主机和端口信息,其值的格式为 host[port],host2[port2]。
<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:
但是,如果我将主机和端口值作为定位器属性的一部分传递如下,它会按预期工作。
<gfe:pool id="locatorPool" locators="host1[port1],host2[port2]">
这是 Spring Data Gemfire 中的问题吗?
由于底层异常是 NoAvailableLocatorsException
,请您尝试连接到来自 gfsh
的定位器,看看是否成功?
gfsh>connect --locator=host1[port1]
Unable to connect to any locators in the list "
host[10334],host2[10334]:10334]
";
堆栈跟踪消息中的 host/port,以逗号分隔的字符串不正确。
我收集到你的 JNDI 上下文中的 GemFire 定位器配置正确指定为...“host[10334],host2[10334]
”?
如果是这样,那么这归结为一个简单的事实,即 Spring Data GemFire 没有正确地,或者更确切地说,目前没有处理 [=14] 中的 SpEL 表达式=] 和 servers
<gfe:pool>
XML 命名空间元素基于 bean 定义的属性。
但是,它确实处理 Spring 属性 占位符,如...
<gfe:pool id="locatorsPool" locators="${app.gemfire.locators}"/>
理解当前行为的原因是一个相当长且复杂的解释,但肯定可以改进。所以,我提交了 SGF-535.
NOTE: I fixed a similar issue in the
PoolParser
when property placeholders were specified with thelocators
andservers
attributes in 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 了解我的最新进展。
抱歉给您带来不便,
约翰