Skip to content

Hprose 上下文

小马哥 edited this page Aug 18, 2016 · 7 revisions

概述

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

Hprose 上下文对象的基类是 HproseContext

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

在服务器端,有 ServiceContext 子类实现。ServiceContext 同时又是 HttpContextTcpContextWebSocketContext 的父类。

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

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

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

HproseContext 类

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

getUserData 方法

public Map<String, Object> 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 对象。