锁定老帖子 主题:网站系统中应用mina
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (7)
|
|
---|---|
作者 | 正文 |
发表时间:2010-02-24
流程是这样的 当车务通系统的客户端,也就是浏览器页面,发出请求,车务通系统中的servlet接收,调用mina客户端的Iosession.write()方法 向mina服务器端(也就是远程服务器)发送请求、调用接口后 , 远程服务器会返回响应的处理结果, 然后在mina客户端(车务通系统中接收),messageReceive()方法负责接收,在这里遇到了问题,接收后的数据该如何返回给客户端(浏览器端)。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-02-24
传递HttpServletResponse
|
|
返回顶楼 | |
发表时间:2010-02-25
问题就是 这个 response传不到messageReceive()里面 而且即使传进去了 也无法判断是哪次的客户端浏览器在调用
|
|
返回顶楼 | |
发表时间:2010-02-25
lz的意思是说messageReceive()同Iosession.write(),这两个方法不在同一个线程中。是异步调用对吧?变成同步的就可以了。在Servlet中调用完write()后,立刻调用messageReceive()。
不知理解的对不对? |
|
返回顶楼 | |
发表时间:2010-02-25
这个问题是很搞的,异步数据返回判断是那次请求的,我也碰到没解决,后来换别的了
|
|
返回顶楼 | |
发表时间:2010-02-25
最后修改:2010-02-25
将ServletContext注入到你的messageReceive()方法的类中(使用Spring等IOC容器方便些,用J2EE2.4+也容易做),在messageReceive()将的信息以sessionId或者是longid为索引存储,使用ajax刷新用户视图,将ServletContext中的内容取出呈现给用户,其他周边的工作就不说了。
|
|
返回顶楼 | |
发表时间:2010-02-25
1》异步的话,就根据推技术或ajax轮询等技术获取messageReceive()的返回值。
2》同步的话根据notify/wait 去阻塞获取messageReceive()返回值,然后直接在servlet中返回给浏览器。(要设立个超时的时间,超时给出相应的处理) |
|
返回顶楼 | |
发表时间:2010-02-25
mingxiao2010 写道 这个问题是很搞的,异步数据返回判断是那次请求的,我也碰到没解决,后来换别的了
那请问 你们最后是采用了什么样的处理方法 |
|
返回顶楼 | |
发表时间:2010-02-25
phoenixup 写道 将ServletContext注入到你的messageReceive()方法的类中(使用Spring等IOC容器方便些,用J2EE2.4+也容易做),在messageReceive()将的信息以sessionId或者是longid为索引存储,使用ajax刷新用户视图,将ServletContext中的内容取出呈现给用户,其他周边的工作就不说了。
关键是 messageReceive()方法返回的信息不是 我们公司编写 规定的 ,在这个方法里面获得的信息是没有sessionId等标识的 |
|
返回顶楼 | |
发表时间:2010-02-25
vvggsky 写道 1》异步的话,就根据推技术或ajax轮询等技术获取messageReceive()的返回值。
2》同步的话根据notify/wait 去阻塞获取messageReceive()返回值,然后直接在servlet中返回给浏览器。(要设立个超时的时间,超时给出相应的处理) 由于异步没有实现,所以现在采用了同步,但是 会遇到 1 可能是上个返回信息还没有接收到,第二个请求就又发出了,导致了阻塞,消息发出去,mina服务器端一直没有返回 2 还有时候,会出现 本次请求返回的信息,跟请求的信息不对应的情况,而是上次请求返回的信息。 如果采用异步的话 推技术或ajax轮询技术 具体用什么样的技术 或 框架 能不能详细介绍下 |
|
返回顶楼 | |