论坛首页 Java企业应用论坛

使用spring和memcached的困惑

浏览 13978 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2012-02-15  
近日使用spring管理memcached,配置文件如下,代码也如下,会提示
ERROR com.schooner.MemCached.SchoonerSockIOPool - attempting to get SockIO from uninitialized pool!

不知道有同学遇到过这个问题不?uninitialized pool,求教。

<bean id="memcachedPool" class="com.danga.MemCached.SockIOPool" factory-method="getInstance"
        init-method="initialize" destroy-method="shutDown">
        <constructor-arg>
            <value>neeaMemcachedPool</value>
        </constructor-arg>
        <property name="servers">
            <list>
                <value>127.0.0.1:11211</value>
            </list>
        </property>
        <property name="initConn">
            <value>20</value>
        </property>
        <property name="minConn">
            <value>10</value>
        </property>
        <property name="maxConn">
            <value>50</value>
        </property>
        <property name="maintSleep">
            <value>30</value>
        </property>
        <property name="nagle">
            <value>false</value>
        </property>
        <property name="socketTO">
            <value>3000</value>
        </property>
    </bean>
    <bean id="memcachedClient" class="com.danga.MemCached.MemCachedClient">
        <constructor-arg>
            <value>neeaMemcachedPool</value>
        </constructor-arg>

    </bean>


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.danga.MemCached.MemCachedClient;

public class MClient {

	public static void main(String[] args) {

		ApplicationContext ctx = new FileSystemXmlApplicationContext(
				"/WebRoot/WEB-INF/classes/config/application-context.xml");

		MemCachedClient mc = (MemCachedClient) ctx.getBean("memcachedClient");
		for (int i = 0; i < 100; i++) {
			// try{Thread.sleep(2000);}catch(Exception e){}
			mc.set("key" + i, "value" + i);
		}
		try {
			Thread.sleep(5000);
		} catch (Exception e) {
		}
		for (int i = 0; i < 100; i++) {
			System.out.println("get " + i + " value " + mc.get("key" + i));
		}
	}

}
   发表时间:2012-02-15  
SchoonerSockIOPool is not initialized
0 请登录后投票
   发表时间:2012-02-15  
<constructor-arg>  
         <value>neeaMemcachedPool</value>  
       </constructor-arg>


这个必须改啊

0 请登录后投票
   发表时间:2012-02-15  
memcachedPool这个还对象还没有实例化吧,先get一个memcachedPool对象试试。
你给memcachedClient设置了poolName,memcachedClient实例化的时候会去取这个名字的pool,没有就SockIOPool pool = new SockIOPool()这样初始化一个。
0 请登录后投票
   发表时间:2012-02-15  
com.schooner.MemCached.SchoonerSockIOPool
这个是啥呀
0 请登录后投票
   发表时间:2012-02-16  
fancyboy2050 写道
memcachedPool这个还对象还没有实例化吧,先get一个memcachedPool对象试试。
你给memcachedClient设置了poolName,memcachedClient实例化的时候会去取这个名字的pool,没有就SockIOPool pool = new SockIOPool()这样初始化一个。

真的是这样,前面先去get了SockIOPool 对象,就可以了。。这是为什么呢?

SockIOPool pool =  (SockIOPool) ctx.getBean("memcachedPool");
		
		MemCachedClient mc = (MemCachedClient) ctx.getBean("memcachedClient");
0 请登录后投票
   发表时间:2012-02-16  
memcachedPool这个还对象还没有实例化
试试在<bean id="memcahedPool"中加入
lazy-init= false
0 请登录后投票
   发表时间:2012-02-16  
lvjun106 写道
memcachedPool这个还对象还没有实例化
试试在<bean id="memcahedPool"中加入
lazy-init= false

0 请登录后投票
   发表时间:2012-02-16  
lvjun106 写道
memcachedPool这个还对象还没有实例化
试试在<bean id="memcahedPool"中加入
lazy-init= false

嗯,这个很好。。非常感谢。
0 请登录后投票
   发表时间:2012-02-17   最后修改:2012-02-17
我试了,没问题啊。Spring默认就是启动时加载容器中所有的配置
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics