今天调试与同事新写程序对接接口,几乎调了一天了最后终于找到问题所在,还是项目经验少吧,太费劲啦。说说问题吧,当做个备忘录:
今天的remoting就是回调不过去,独立的程序中可以,但一到webservice联调就不正常了,提示“此远程处理代理没有信道接收,这意味着服务器没有正在侦听的已注册服务器信道,或者此应用程序没有用来与服务器对话的适当客户端信道。”,问题出在哪呢?此时服务器端一个测试timer不断返回内容,客户端都可以接收,但webservcie端就是收不到。
开始认为客户端可以正确接收,说明信道注册正常,是不是哪里消息传递丢失?后来逐步跟踪,发现webservice端一调用remoteClient,结果就不能返回了。问题应该出在remotClient上。最后发现,尽管remotClient中使用了singleton模式,但webServcie端是独立线程,与客户端线程不同,这样,客户端启动的remoteClicet,实际上与webservice端的不同,需要单独注册连接。问题终于解决了,为保证每次都必有连接,在webservice每调用remoting服务端的方法中,都提前判断一次连接,如果没有,重新注册。