论坛首页 Java企业应用论坛

网站系统中应用mina

浏览 17334 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (7)
作者 正文
   发表时间:2010-02-24  
现在在做个车务通系统(网站),系统需要与远程的mina服务器端进行交换,服务器端由其他公司开发,只为我们提供接口,在我们的车务通系统中需要通过网络编程调用这些远程接口,所以车务通系统相当于mina的客户端(相对于mina服务器端而言)。

流程是这样的   当车务通系统的客户端,也就是浏览器页面,发出请求,车务通系统中的servlet接收,调用mina客户端的Iosession.write()方法  向mina服务器端(也就是远程服务器)发送请求、调用接口后 ,  远程服务器会返回响应的处理结果,
然后在mina客户端(车务通系统中接收),messageReceive()方法负责接收,在这里遇到了问题,接收后的数据该如何返回给客户端(浏览器端)。
   发表时间:2010-02-24  
传递HttpServletResponse
0 请登录后投票
   发表时间:2010-02-25  
问题就是 这个 response传不到messageReceive()里面    而且即使传进去了  也无法判断是哪次的客户端浏览器在调用
0 请登录后投票
   发表时间:2010-02-25  
lz的意思是说messageReceive()同Iosession.write(),这两个方法不在同一个线程中。是异步调用对吧?变成同步的就可以了。在Servlet中调用完write()后,立刻调用messageReceive()。
不知理解的对不对?
0 请登录后投票
   发表时间:2010-02-25  
这个问题是很搞的,异步数据返回判断是那次请求的,我也碰到没解决,后来换别的了
0 请登录后投票
   发表时间:2010-02-25   最后修改:2010-02-25
将ServletContext注入到你的messageReceive()方法的类中(使用Spring等IOC容器方便些,用J2EE2.4+也容易做),在messageReceive()将的信息以sessionId或者是longid为索引存储,使用ajax刷新用户视图,将ServletContext中的内容取出呈现给用户,其他周边的工作就不说了。
0 请登录后投票
   发表时间:2010-02-25  
1》异步的话,就根据推技术或ajax轮询等技术获取messageReceive()的返回值。

2》同步的话根据notify/wait 去阻塞获取messageReceive()返回值,然后直接在servlet中返回给浏览器。(要设立个超时的时间,超时给出相应的处理)
1 请登录后投票
   发表时间:2010-02-25  
mingxiao2010 写道
这个问题是很搞的,异步数据返回判断是那次请求的,我也碰到没解决,后来换别的了

那请问 你们最后是采用了什么样的处理方法
0 请登录后投票
   发表时间:2010-02-25  
phoenixup 写道
将ServletContext注入到你的messageReceive()方法的类中(使用Spring等IOC容器方便些,用J2EE2.4+也容易做),在messageReceive()将的信息以sessionId或者是longid为索引存储,使用ajax刷新用户视图,将ServletContext中的内容取出呈现给用户,其他周边的工作就不说了。



关键是 messageReceive()方法返回的信息不是 我们公司编写 规定的 ,在这个方法里面获得的信息是没有sessionId等标识的
0 请登录后投票
   发表时间:2010-02-25  
vvggsky 写道
1》异步的话,就根据推技术或ajax轮询等技术获取messageReceive()的返回值。

2》同步的话根据notify/wait 去阻塞获取messageReceive()返回值,然后直接在servlet中返回给浏览器。(要设立个超时的时间,超时给出相应的处理)


由于异步没有实现,所以现在采用了同步,但是 会遇到 1 可能是上个返回信息还没有接收到,第二个请求就又发出了,导致了阻塞,消息发出去,mina服务器端一直没有返回
2 还有时候,会出现 本次请求返回的信息,跟请求的信息不对应的情况,而是上次请求返回的信息。





如果采用异步的话  推技术或ajax轮询技术  具体用什么样的技术 或 框架 能不能详细介绍下
0 请登录后投票
论坛首页 Java企业应用版

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