概述

Hprose 在客户端和服务器端提供了过滤器和中间件功能,如果用户希望在这些过滤器和中间件传递数据,就会用到 Hprose 上下文对象,另外,用户在服务器事件和服务方法中也可以使用 Hprose 上下文对象来存取环境变量。

Hprose 上下文对象的基类是 HproseContext。

在客户端,有 ClientContext 子类实现。

在服务器端,有 ServiceContext 子类实现。ServiceContext 同时又是 HttpContext、TcpContext 和 WebSocketContext 的父类。

需要注意的是,客户端上下文和服务器端上下文是各自独立的,客户端上下文对象的数据只在客户端的整个调用过程中传递,服务器端上下文对象也只在服务器端的整个调用过程中传递。客户端上下文对象的内容不会传递到服务器端。

另外,每个调用的上下文对象也都是各自独立的,因此在一个调用中设置的上下文数据也不会传递到另一个调用中去。

我们现在来看一下这几个类上都有哪些方法。

HproseContext 类

HproseContext 类的主要功能是提供了一个存取用户数据的上下文。

getUserData 方法

public Map getUserData(); 获取用户在 HproseContext 上设置的数据。用户在改方法返回值上也可以添加新的键值对,这些键值对会随着 HproseContext 对象的传递而传递下去。

getByte 方法

public byte getByte(String key); 获取一个 byte 类型的值。当该值未设置时,返回 0.

getShort 方法 public short getShort(String key); 获取一个 short 类型的值。当该值未设置时,返回 0.

getInt 方法

public int getInt(String key); 获取一个 int 类型的值。当该值未设置时,返回 0.

getLong 方法

public long getLong(String key); 获取一个 long 类型的值。当该值未设置时,返回 0L.

getFloat 方法

public float getFloat(String key); 获取一个 float 类型的值。当该值未设置时,返回 0.0f.

getDouble 方法

public double getDouble(String key); 获取一个 double 类型的值。当该值未设置时,返回 0.0d.

getBoolean 方法

public boolean getBoolean(String key); 获取一个 boolean 类型的值。当该值未设置时,返回 false.

getString 方法

public String getString(String key); 获取一个 String 类型的值。当该值未设置时,返回 “”.

get 方法

public Object get(String key); 获取一个对象。当该值未设置时,返回 null.

setByte 方法

public void setByte(String key, byte value); 设置一个 byte 类型的值到 userData 中。

setShort 方法

public void setShort(String key, short value); 设置一个 short 类型的值到 userData 中。

setInt 方法

public void setInt(String key, int value); 设置一个 int 类型的值到 userData 中。

setLong 方法

public void setLong(String key, long value); 设置一个 long 类型的值到 userData 中。

setFloat 方法

public void setFloat(String key, float value); 设置一个 float 类型的值到 userData 中。

setDouble 方法

public void setDouble(String key, double value); 设置一个 double 类型的值到 userData 中。

setBoolean 方法

public void setBoolean(String key, boolean value); 设置一个 boolean 类型的值到 userData 中。

setString 方法

public void setString(String key, String value); 设置一个 String 类型的值到 userData 中。

set 方法

public void set(String key, Object value); 设置一个 Object 类型的值到 userData 中。

ClientContext 类

ClientContext 类的功能是提供了一个存取客户端信息的上下文。

getClient 方法

public HproseClient getClient(); 返回客户端对象本身。

getSettings 方法

public InvokeSettings getSettings(); 返回客户端当前调用的设置。

ServiceContext 类

ServiceContext 类的功能是提供了一个存取服务信息的上下文。

clients 字段

public final HproseClients clients; 只读字段,用来获取一个客户端代理对象。通过该对象,可以实现服务器对客户端的推送操作。后面我们在介绍推送时,在详细介绍 HproseClients 接口上的方法。

getRemoteMethod 方法

public HproseMethod getRemoteMethod(); 获取当前调用对应的 HproseMethod 远程方法对象。

setRemoteMethod 方法

public void setRemoteMethod(HproseMethod method); 设置当前调用对应的 HproseMethod 远程方法对象。用户通常不需要使用该方法,该方法在 Hprose 服务内部会被自动调用,除非你希望替换调用 Hprose 服务解析出来的方法。

getMethods 方法

public HproseMethods getMethods(); 获取非全局发布的 HproseMethod 远程方法对象集。

setMethods 方法

public void setMethods(HproseMethods methods); 设置非全局发布的 HproseMethod 远程方法对象集。该方法在 Hprose 服务内部被调用,用户无需调用。

isMissingMethod 方法

public boolean isMissingMethod(); 返回当前调用是否是 MissingMethod。

setMissingMethod 方法

public void setMissingMethod(boolean missingMethod); 设置当前调用是否是 MissingMethod。该方法在 Hprose 服务内部被调用,用户无需调用。

isByref 方法

public boolean isByref(); 返回当前调用是否是引用参数传递调用。

setByref 方法

public void setByref(boolean byref); 设置当前调用是否是引用参数传递调用。该方法在 Hprose 服务内部被调用,用户无需调用。

HttpContext 类

HttpContext 类的功能是提供了一个存取 HTTP 服务信息的上下文。

getRequest 方法

public HttpServletRequest getRequest(); 返回 HttpServlet 的 request 对象。

getResponse 方法

public HttpServletResponse getResponse(); 返回 HttpServlet 的 response 对象。通常用这个对象来输出一些用户自己定制的头信息,但是不要用它输出内容,否则会影响正常内容的返回。

getSession 方法

public HttpSession getSession(); public HttpSession getSession(boolean create); 返回 HttpServlet 的 session 对象。

getConfig 方法

public ServletConfig getConfig(); 返回 Servlet 的配置。

getApplication 方法

public ServletContext getApplication(); 返回 Servlet 的上下文对象。

TcpContext 类

TcpContext 类的功能是提供了一个存取 TCP 服务信息的上下文。

getSocketChannel 方法

public SocketChannel getSocketChannel(); 返回当前调用所使用的 SocketChannel 对象。

getSocket 方法

public Socket getSocket(); 返回当前调用所使用的 Socket 对象。是 context.getSocketChannel().socket() 的简化写法。

WebSocketContext 类

WebSocketContext 类的功能是提供了一个存取 WebSocket 服务信息的上下文。

getSession 方法

public Session getSession(); 返回 WebSocket 的 javax.websocket.Session 对象。

getConfig 方法

public EndpointConfig getConfig(); 返回 WebSocket 的 javax.websocket.EndpointConfig 对象。