默认
发表评论 11
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK服务器端OnlineProcessor.getInstance()单例怎么不起作用?
阅读(46851) | 评论(11 收藏 淘帖
目前服务器要写一个发消息的接口 我要拿到用户列表 但是通过这个OnlineProcessor up = OnlineProcessor.getInstance();拿到的不是和IM登录创建的OnlineProcessor ,不是同一个对象,单例怎么不起作用了

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK
上一篇:[已回复] 锁屏以后MobileIMSDK的休眠问题请教下一篇:[已回复] 求教超长消息出现ucnv_toUnicode failed: 的问题
推荐方案
评论 11
这应该是你弄出了低级错误,不然要怀疑你用的是不是假java了。你可以把它们的hashcode输出看看,如果不一样肯定不是同一个对象
引用:JackJiang 发表于 2017-10-24 19:20
这应该是你弄出了低级错误,不然要怀疑你用的是不是假java了。你可以把它们的hashcode输出看看,如果不一样 ...

这个hashcode输出了 不是一个值的,断点的话是重新new出来的
签名: Java服务端通过OnlineProcessor up = OnlineProcessor.getInstance();拿到的对象和IM ...
引用:db123 发表于 2017-10-24 19:27
这个hashcode输出了 不是一个值的,断点的话是重新new出来的

你检查下代码为什么会重新new一个出来?这有点扯吧
你可以说说你是怎么部署的?
引用:JackJiang 发表于 2017-10-24 21:32
你检查下代码为什么会重新new一个出来?这有点扯吧
你可以说说你是怎么部署的?

        <bean id="serverCoreHandler" class="org.mmm.mobsdk.ServerCoreHandler" lazy-init="true" />

        <bean id="serverLauncher" class="org.mmm.mobsdk.ServerLauncher"
                  init-method="startup" destroy-method="shutdown">
        </bean>
这样部署的,其他的地方没改的 就是用你的SVN上的demo
签名: Java服务端通过OnlineProcessor up = OnlineProcessor.getInstance();拿到的对象和IM ...
引用:db123 发表于 2017-10-25 09:21
这样部署的,其他的地方没改的 就是用你的SVN上的demo

上次论坛里也是有人用Spring搞出这样的问题。

serverCoreHandler不需要你自行来实例化,你只要保证serverLauncher被启动就行了,serverLauncher会来管理serverCoreHandler。你试试看
引用:JackJiang 发表于 2017-10-25 10:19
上次论坛里也是有人用Spring搞出这样的问题。

serverCoreHandler不需要你自行来实例化,你只要保证ser ...

<bean id="serverCoreHandler" class="org.mmm.mobsdk.ServerCoreHandler" lazy-init="true" />我把这个注释掉了 但还是有俩个实例的生成
签名: Java服务端通过OnlineProcessor up = OnlineProcessor.getInstance();拿到的对象和IM ...
引用:db123 发表于 2017-10-25 11:00
我把这个注释掉了 但还是有俩个实例的生成

这一定是你在Spring里使用MobileIMSDK不当造成的,用Spring这种重量级框架,一定要回归到事情的本质不看待问题。MobileIMSDK就相当于个java的helloword,没有任何复杂的依赖,你试着想想如何在Spring里跑通一个hello word是一个效果。

你看看这个帖子能不能帮到你:http://www.52im.net/thread-884-1-1.html
引用:JackJiang 发表于 2017-10-25 11:46
这一定是你在Spring里使用MobileIMSDK不当造成的,用Spring这种重量级框架,一定要回归到事情的本质不看 ...

我把OnlineProcessor弄成spring的bean  还是一样 不是单例
签名: Java服务端通过OnlineProcessor up = OnlineProcessor.getInstance();拿到的对象和IM ...
引用:JackJiang 发表于 2017-10-25 11:46
这一定是你在Spring里使用MobileIMSDK不当造成的,用Spring这种重量级框架,一定要回归到事情的本质不看 ...

认真检查了一下 以为开启了if(ServerLauncher.bridgeEnabled){
                QoS4ReciveDaemonC2B.getInstance().startup();
                QoS4SendDaemonB2C.getInstance().startup(true).setServerLauncher(this);
                    serverCoreHandler.lazyStartupBridgeProcessor();
                    logger.info("[IMCORE] 配置项:已开启与MobileIMSDK Web的互通.");
            }这个就可以了 但还是不行啊,感觉项目是启动了俩个进程
签名: Java服务端通过OnlineProcessor up = OnlineProcessor.getInstance();拿到的对象和IM ...
引用:db123 发表于 2017-10-25 15:13
认真检查了一下 以为开启了if(ServerLauncher.bridgeEnabled){
                QoS4ReciveDaemonC2B.getInstan ...

你的Spring启动不个实例吧。上次有个群友好像类似的问题是确实开了两个实例。
建议你把电脑重启一遍,干干净净试一试
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部