bluegitter / xmemcached

Automatically exported from code.google.com/p/xmemcached
0 stars 0 forks source link

NullPointerException when build MemcachedClient #166

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1.代码是:
MemcachedClientBuilder builder = new XMemcachedClientBuilder(
                AddrUtil.getAddresses("134.128.196.10:11211"));
         MemcachedClient memcachedClient=null;
        try {
            memcachedClient = builder.build();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
            throw e1;
        }
2.重启war包就恢复,但多调用几次又会报NullPointerException的错�
��。
3.

java.lang.NullPointerException
        at java.lang.ApplicationShutdownHooks.remove(ApplicationShutdownHooks.java:73)
        at java.lang.Runtime.removeShutdownHook(Runtime.java:234)
        at com.google.code.yanf4j.core.impl.AbstractController.stop(AbstractController.java:476)
        at com.google.code.yanf4j.nio.impl.NioController.start0(NioController.java:126)
        at com.google.code.yanf4j.core.impl.AbstractController.start(AbstractController.java:358)
        at net.rubyeye.xmemcached.XMemcachedClient.startConnector(XMemcachedClient.java:600)
        at net.rubyeye.xmemcached.XMemcachedClient.start0(XMemcachedClient.java:593)
        at net.rubyeye.xmemcached.XMemcachedClient.<init>(XMemcachedClient.java:778)
        at net.rubyeye.xmemcached.XMemcachedClientBuilder.build(XMemcachedClientBuilder.java:252)
        at ecc.iserv.manager.manager.AuthorizationManager.getMemcachedClient(AuthorizationManager.java:61)
        at ecc.iserv.manager.manager.AuthorizationManager.authorize(AuthorizationManager.java:132)
        at ecc.iserv.manager.call.AuthorizationImpl.call(AuthorizationImpl.java:50)
        at com.telthink.link.service.Call.localCall(Call.java:243) 
What is the expected output? What do you see instead?

What version of the product are you using? On what operating system?
websphere 6.1.

Please provide any additional information below.

Original issue reported on code.google.com by fjlin...@gmail.com on 8 Nov 2011 at 11:01

GoogleCodeExporter commented 9 years ago
应该不只这个日志吧,你没有配置log4j吗?有没有其他异常信
息

这是启动的时候就出错了,直接中止了。

Original comment by killme2...@gmail.com on 8 Nov 2011 at 11:06

GoogleCodeExporter commented 9 years ago
这个日志不是在启动的时候爆的错,日志也是从log4j中截取出
来的。
我是没有把MemcachedClient类作为单例。而是写在方法里面,每��
�要取数据的时候进行重新创建,是否是这样的问题。
private MemcachedClient getMemcachedClient() throws IOException{
        MemcachedClientBuilder builder = new XMemcachedClientBuilder(
                AddrUtil.getAddresses("134.128.196.10:11211"));
         MemcachedClient memcachedClient=null;
        try {
            memcachedClient = builder.build();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
            throw e1;
        }
        return memcachedClient;
    }

获取数据时,调用这个方法获取MemcachedClient,刚开始是可以��
�用的,多调用几次就会爆上面的错误了。

Original comment by fjlin...@gmail.com on 9 Nov 2011 at 12:50

GoogleCodeExporter commented 9 years ago
你这样用是误用,MemcachedClient是一个重量级的资源,重复创��
�代价很高,我还是推荐你用单例模式,利用ContextListener管理�
��命周期。

Original comment by killme2...@gmail.com on 9 Nov 2011 at 2:31

GoogleCodeExporter commented 9 years ago
OK,这个确实是我的失误,由于初次用Xmemcached.只是看了wiki的
User_guide。所以不了解这个是重量级资源,这样应该就没有问�
��了。谢谢!

Original comment by fjlin...@gmail.com on 9 Nov 2011 at 2:57

GoogleCodeExporter commented 9 years ago
好的,那我关闭了。建议阅读下这个

http://www.blogjava.net/killme2008/archive/2010/07/08/325564.html

Original comment by killme2...@gmail.com on 9 Nov 2011 at 5:28