在我的项目中,控件转到http到https但在http中我将值放在会话中,但控件转到http,值为null

时间:2012-10-24 18:07:28

标签: google-app-engine

我正在使用googleapp。在我的项目中,我从LinkedIn获取连接。它在本地工作正常,但是当我部署googleappengine时,它不起作用。我的控制从http到https(LinkedIn登录页面),那时我的会话值为空,请帮助我。

            OAuthService service = new ServiceBuilder()
        .provider(LinkedInApi.class)
         .apiKey("ln835u1zgg0c")
         .apiSecret("I9Bz3lloYT8jlO6P").scope("r_network")
          .callback("http://mygbuddy.appspot.com/CallBackUrl.jsp")
           .build();


        Token requestToken=service.getRequestToken();
        HttpSession session=request.getSession();
        session.setAttribute("service", service);
        session.setAttribute("requesttoken", requestToken);


              CallBackUrl.jsp
            <%
                  out.println(session.getAttribute("service"););


                 %>

在jsp我得到了null请帮帮我

1 个答案:

答案 0 :(得分:0)

GAE是一个分布式系统。因此,您的请求可以在多个实例启动时处理。使用DataStore持久性完成不同实例之间的公共会话数据。 当您将某些内容放入会话时,它实际上存储在DataStore中。这意味着atrributes应遵循DataStore持久性要求(https://developers.google.com/appengine/docs/java/datastore/entities)。

标准OAUthServiceImpl GAE类不可序列化(检查http://code.google.com/p/googleappengine/source/browse/trunk/java/src/main/com/google/appengine/api/oauth/OAuthServiceImpl.java?r=194)因此无法存储在DataStore中并在以后访问。