[转帖]working with session on BlazeDS

when applying BlazeDS, you might notice that in web.xml, a listener named "flex.messaging.HttpFlexSession" should be inserted.
It is how BlazeDS can work with session data.
BlazeDS provide several classes which is useful for get access to the session and the HTTP pieces of the session, such as the HTTP servlet request and response. This lets you access HTTP data when you use a Flex application in the context of a larger web application where other classes, such as JSPs or Struts actions, might have stored information.

  • flex.messaging.FlexContext
  • flex.messaging.FlexSession

    The following example shows a Java class that calls FlexContext.getHttpRequest() to get an HTTPServletRequest object and calls FlexContext.getFlexSession() to get a FlexSession object. By exposing this class as a remote object, you can make it accessible to a Flex client application; you place the compiled class in the WEB_INF/classes directory

    package myROPackage;
    import flex.messaging.*;
    import java.io.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class SessionRO {
    public HttpServletRequest request;
    public FlexSession session;
    public UsefulRemoteObject() {
    request = FlexContext.getHttpRequest();
    session = FlexContext.getFlexSession();
    }
    public String getSessionId() throws Exception {
    String s = new String();
    s = (String) session.getId();
    return s;
    }
    public String getHeader(String h) throws Exception {
    String s = new String();
    s = (String) request.getHeader(h);
    return h + "=" + s;
    }
    }
    

    The following example shows a Remoting Service destination definition that exposes the SessionRO class as a remote object. You add this destination definition to your Remoting Service configuration file.

    ...
    <destination id="myRODestination">
    <properties>
    <source>myROPackage.SessionRO</source>
    </properties>
    </destination>
    ...
    

    The following examples shows an ActionScript snippet for calling the remote object from a Flex client application. You place this code inside a method declaration.

    ...
    ro = new RemoteObject();
    ro.destination = "myRODestination";
    ro.getSessionId.addEventListener("result", getSessionIdResultHandler);
    ro.getSessionId();
    ...
  • posted @ 2010-05-10 10:50  ヨゥヒン3RD  阅读(494)  评论(0编辑  收藏  举报