-
Notifications
You must be signed in to change notification settings - Fork 185
Hprose 上下文
Hprose 在客户端和服务器端提供了过滤器和中间件功能,如果用户希望在这些过滤器和中间件传递数据,就会用到 Hprose 上下文对象,另外,用户在服务器事件和服务方法中也可以使用 Hprose 上下文对象来存取环境变量。
Hprose 上下文对象的基类是 HproseContext。
在客户端,有 ClientContext 子类实现。
在服务器端,有 ServiceContext 子类实现。ServiceContext 同时又是 HttpContext、TcpContext 和 WebSocketContext 的父类。
需要注意的是,客户端上下文和服务器端上下文是各自独立的,客户端上下文对象的数据只在客户端的整个调用过程中传递,服务器端上下文对象也只在服务器端的整个调用过程中传递。客户端上下文对象的内容不会传递到服务器端。
另外,每个调用的上下文对象也都是各自独立的,因此在一个调用中设置的上下文数据也不会传递到另一个调用中去。
我们现在来看一下这几个类上都有哪些方法。
HproseContext 类的主要功能是提供了一个存取用户数据的上下文。
public Map<String, Object> getUserData();获取用户在 HproseContext 上设置的数据。用户在改方法返回值上也可以添加新的键值对,这些键值对会随着 HproseContext 对象的传递而传递下去。
public byte getByte(String key);获取一个 byte 类型的值。当该值未设置时,返回 0.
public short getShort(String key);获取一个 short 类型的值。当该值未设置时,返回 0.
public int getInt(String key);获取一个 int 类型的值。当该值未设置时,返回 0.
public long getLong(String key);获取一个 long 类型的值。当该值未设置时,返回 0L.
public float getFloat(String key);获取一个 float 类型的值。当该值未设置时,返回 0.0f.
public double getDouble(String key);获取一个 double 类型的值。当该值未设置时,返回 0.0d.
public boolean getBoolean(String key);获取一个 boolean 类型的值。当该值未设置时,返回 false.
public String getString(String key);获取一个 String 类型的值。当该值未设置时,返回 "".
public Object get(String key);获取一个对象。当该值未设置时,返回 null.
public void setByte(String key, byte value);设置一个 byte 类型的值到 userData 中。
public void setShort(String key, short value);设置一个 short 类型的值到 userData 中。
public void setInt(String key, int value);设置一个 int 类型的值到 userData 中。
public void setLong(String key, long value);设置一个 long 类型的值到 userData 中。
public void setFloat(String key, float value);设置一个 float 类型的值到 userData 中。
public void setDouble(String key, double value);设置一个 double 类型的值到 userData 中。
public void setBoolean(String key, boolean value);设置一个 boolean 类型的值到 userData 中。
public void setString(String key, String value);设置一个 String 类型的值到 userData 中。
public void set(String key, Object value);设置一个 Object 类型的值到 userData 中。
ClientContext 类的功能是提供了一个存取客户端信息的上下文。
public HproseClient getClient();返回客户端对象本身。
public InvokeSettings getSettings();返回客户端当前调用的设置。
ServiceContext 类的功能是提供了一个存取服务信息的上下文。
public final HproseClients clients;只读字段,用来获取一个客户端代理对象。通过该对象,可以实现服务器对客户端的推送操作。后面我们在介绍推送时,在详细介绍 HproseClients 接口上的方法。
public HproseMethod getRemoteMethod();获取当前调用对应的 HproseMethod 远程方法对象。
public void setRemoteMethod(HproseMethod method);设置当前调用对应的 HproseMethod 远程方法对象。用户通常不需要使用该方法,该方法在 Hprose 服务内部会被自动调用,除非你希望替换调用 Hprose 服务解析出来的方法。
public HproseMethods getMethods();获取非全局发布的 HproseMethod 远程方法对象集。
public void setMethods(HproseMethods methods);设置非全局发布的 HproseMethod 远程方法对象集。该方法在 Hprose 服务内部被调用,用户无需调用。
public boolean isMissingMethod();返回当前调用是否是 MissingMethod。
public void setMissingMethod(boolean missingMethod);设置当前调用是否是 MissingMethod。该方法在 Hprose 服务内部被调用,用户无需调用。
public boolean isByref();返回当前调用是否是引用参数传递调用。
public void setByref(boolean byref);设置当前调用是否是引用参数传递调用。该方法在 Hprose 服务内部被调用,用户无需调用。
HttpContext 类的功能是提供了一个存取 HTTP 服务信息的上下文。
public HttpServletRequest getRequest();返回 HttpServlet 的 request 对象。
public HttpServletResponse getResponse();返回 HttpServlet 的 response 对象。通常用这个对象来输出一些用户自己定制的头信息,但是不要用它输出内容,否则会影响正常内容的返回。
public HttpSession getSession();
public HttpSession getSession(boolean create);返回 HttpServlet 的 session 对象。
public ServletConfig getConfig();返回 Servlet 的配置。
public ServletContext getApplication();返回 Servlet 的上下文对象。
TcpContext 类的功能是提供了一个存取 TCP 服务信息的上下文。
public SocketChannel getSocketChannel();返回当前调用所使用的 SocketChannel 对象。
public Socket getSocket();返回当前调用所使用的 Socket 对象。是 context.getSocketChannel().socket() 的简化写法。
WebSocketContext 类的功能是提供了一个存取 WebSocket 服务信息的上下文。
public Session getSession();返回 WebSocket 的 javax.websocket.Session 对象。
public EndpointConfig getConfig();返回 WebSocket 的 javax.websocket.EndpointConfig 对象。