memcached整合spring时:“attempting to get SockIO from uninitialized pool!”问题的解决
1、【问题描述】
memcached整合spring时,遇到这样的问题:“attempting to get SockIO from uninitialized pool!”
网上的答案千篇一律,一看就是各种转载,不具备原创精神,就是不能解决问题。
2、【问题解决】
问题原因其实很简单:就是在spring中定义memCachedPool时,少写了构造参数,而参数值就是它本身的id。
具体代码如下(标红的地方很重要,是问题的根本原因):
<!-- Memcached配置 -->
<bean id="memCachedPool" name="memCachedPool" class="com.whalin.MemCached.SockIOPool"
init-method="initialize" factory-method="getInstance" destroy-method="shutDown"
lazy-init="false">
<constructor-arg>
<value>memCachedPool</value>
</constructor-arg>
<property name="servers">
<list>
<value>${memcached.server1}:${memcached.port1}</value>
</list>
</property>
<property name="initConn">
<value>${memcached.initConn}</value>
</property>
<property name="minConn">
<value>${memcached.minConn}</value>
</property>
<property name="maxConn">
<value>${memcached.maxConn}</value>
</property>
<property name="maintSleep">
<value>${memcached.maintSleep}</value>
</property>
<property name="nagle">
<value>${memcached.nagle}</value>
</property>
<property name="socketTO">
<value>${memcached.socketTO}</value>
</property>
</bean>
<bean id="memCachedClient" class="com.whalin.MemCached.MemCachedClient"
lazy-init="false">
<constructor-arg>
<value>memCachedPool</value>
</constructor-arg>
</bean>