各式各样的 session

在 java 中经常会看到各式各样的 session,但是每种 session 表示的类其实是不一样的。

1、javax.servlet.http.HttpSession

用的最多的是 HttpSession,也叫用户 session,主要用在 JavaWeb 开发中,session 共享,session 超时设置以及验证登录等

package javax.servlet.http;

import java.util.Enumeration;
import javax.servlet.ServletContext;

public interface HttpSession {
    
    
    long getCreationTime();

    String getId();

    long getLastAccessedTime();

    ServletContext getServletContext();

    void setMaxInactiveInterval(int var1);

    int getMaxInactiveInterval();

    /** @deprecated */
    @Deprecated
    HttpSessionContext getSessionContext();

    Object getAttribute(String var1);

    /** @deprecated */
    @Deprecated
    Object getValue(String var1);

    Enumeration<String> getAttributeNames();

    /** @deprecated */
    @Deprecated
    String[] getValueNames();

    void setAttribute(String var1, Object var2);

    /** @deprecated */
    @Deprecated
    void putValue(String var1, Object var2);

    void removeAttribute(String var1);

    /** @deprecated */
    @Deprecated
    void removeValue(String var1);

    void invalidate();

    boolean isNew();
}

2、javax.websocket.Session

WebSocket 会话表示两个 Web 套接字端点之间的对话。 一旦 websocket 握手成功完成,websocket 实现就会为端点提供一个开放的 websocket 会话端点可以通过 MessageHandler 来向会话传入消息,并且可以通过 RemoteEndpoint 对象将消息发送到会话的另一端
一旦会话关闭,它就不再可供应用程序使用,调用它的任何方法(close() 方法除外)都将导致抛出 IllegalStateException。 开发人员应该在 Endpoint.onClose(javax.websocket.Session, javax.websocket.CloseReason) 方法执行之前从会话中获取信息。
会话对象可以被多个线程调用。 在这种情况下,实现必须确保会话可变属性的完整性。

package javax.websocket;

import java.io.Closeable;
import java.io.IOException;
import java.net.URI;
import java.security.Principal;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.websocket.MessageHandler.Partial;
import javax.websocket.MessageHandler.Whole;
import javax.websocket.RemoteEndpoint.Async;
import javax.websocket.RemoteEndpoint.Basic;

public interface Session extends Closeable {
    
    
    WebSocketContainer getContainer();

    void addMessageHandler(MessageHandler var1) throws IllegalStateException;

    Set<MessageHandler> getMessageHandlers();

    void removeMessageHandler(MessageHandler var1);

    String getProtocolVersion();

    String getNegotiatedSubprotocol();

    List<Extension> getNegotiatedExtensions();

    boolean isSecure();

    boolean isOpen();

    long getMaxIdleTimeout();

    void setMaxIdleTimeout(long var1);

    void setMaxBinaryMessageBufferSize(int var1);

    int getMaxBinaryMessageBufferSize();

    void setMaxTextMessageBufferSize(int var1);

    int getMaxTextMessageBufferSize();

    Async getAsyncRemote();

    Basic getBasicRemote();

    String getId();

    void close() throws IOException;

    void close(CloseReason var1) throws IOException;

    URI getRequestURI();

    Map<String, List<String>> getRequestParameterMap();

    String getQueryString();

    Map<String, String> getPathParameters();

    Map<String, Object> getUserProperties();

    Principal getUserPrincipal();

    Set<Session> getOpenSessions();

    <T> void addMessageHandler(Class<T> var1, Partial<T> var2) throws IllegalStateException;

    <T> void addMessageHandler(Class<T> var1, Whole<T> var2) throws IllegalStateException;
}

3、hibernate 的 Session 接口

public interface Session extends Serializable

Java 应用程序与 Hibernate 之间的主要运行时接口,是抽象了持久化服务概念的核心抽象 API 类。

Session 的主要功能是提供对映射的实体类实例的创建、读取和删除操作。实例可能以下面三种状态存在:

自由状态(transient):不曾进行持久化,未与任何 Session 相关联;
持久化状态(persistent):仅与一个 Session 相关联;
游离状态(detached):已经进行过持久化,但当前未与任何 Session 相关联;

Session 的生命周期绑定在一个物理的事务(tansaction)上面。

4、javax.jms.session

这个是用于消息队列发送时用到的 session,通过 session 可以获取到队列发送器,发送消息。

猜你喜欢

转载自blog.csdn.net/IT__learning/article/details/120226080