【问题标题】:GWT - Get session during RPC Service invocationGWT - 在 RPC 服务调用期间获取会话
【发布时间】:2012-08-21 12:16:08
【问题描述】:

我尝试在第一次调用我的 RPC 服务期间获取会话信息。

public class MyServiceImpl extends RemoteServiceServlet implements
MyService {

    public MyServiceImpl() {
        HttpServletRequest req = getThreadLocalRequest();
        // req = null here
    }
}

客户端,我打个简单的电话:

MyServiceAsync service = GWT.create(MyService.class);

在第一次 RPC 调用期间获取 HttpServletRequest 是否有替代解决方案?

谢谢。

【问题讨论】:

    标签: java google-app-engine session gwt servlets


    【解决方案1】:

    您在 servlet 的构造函数中调用 getThreadLocalRequest(),该构造函数仅在 servlet 初始化时调用一次。当时请求不可用。

    您需要覆盖在每次 RPC 调用时调用的 processCall(String) 方法。

    public class MyServiceImpl extends RemoteServiceServlet implements MyService {
    
        @Override
        public String processCall( String payload ) {
            HttpServletRequest req = getThreadLocalRequest();
            HttpSession session = req.getSession();
        }
    }
    

    【讨论】:

    • 我尝试了您的解决方案,但没有调用 processCall 方法。我是否使用 GWT.create(...) 以外的其他调用解决方案?
    • 没有被调用是什么意思?您需要在 service 变量上调用一些 RPC 方法。您必须记住,MyServiceImpl 代码在服务器上运行,GWT.create(..) 在客户端上运行,因此没有会​​话或类似的东西。此时只创建了一个 Javascript 代理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多