-
Notifications
You must be signed in to change notification settings - Fork 187
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 的上下文对象。
HttpContext
类的功能是提供了一个存取 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
对象。