相关文档 下载本手册
PDF (US Ltr) - 3.6Mb
PDF (A4) - 3.6Mb


4.3.1.21 SessionFactory

SessionFactory 代表一个集群。

4.3.1.21.1 概述
 public interface SessionFactory {
// Public Methods  public abstract void close();
  public abstract State currentState();
  public abstract List<Integer> getConnectionPoolSessionCounts();
  public abstract int getRecvThreadActivationThreshold();
  public abstract short[] getRecvThreadCPUids();
  public abstract Session getSession();
  public abstract Session getSession(Map properties);
  public abstract void reconnect();
  public abstract void reconnect(int timeout);
  public abstract void setRecvThreadActivationThreshold(int threshold);
  public abstract void setRecvThreadCPUids(short[] cpuids);
}
4.3.1.21.2 close()
public abstract void close();

关闭此会话工厂。释放所有资源。将当前状态设置为 Closed。关闭后,对 getSession 的调用将抛出 ClusterJUserException。

4.3.1.21.3 currentState()
public abstract State currentState();

获取此会话工厂的当前状态。

4.3.1.21.4 getConnectionPoolSessionCounts()
public abstract List<Integer> getConnectionPoolSessionCounts();

获取一个列表,其中包含连接池中每个连接的打开会话数量。

7.3.14, 7.4.12, 7.5.2

4.3.1.21.5 getRecvThreadActivationThreshold()
public abstract int getRecvThreadActivationThreshold();

获取连接池中所有连接的接收线程激活阈值。16 或更高表示接收线程永远不会用作接收器。0 表示接收线程始终处于活动状态,并保留其自身专有使用的轮询权,有效地阻止所有用户线程成为接收器。在这种情况下,应注意确保接收线程不会与用户线程争夺 CPU 资源;最好将其锁定到 CPU 以供其自身专有使用。默认值为 8。

7.5.7

4.3.1.21.6 getRecvThreadCPUids()
public abstract short[] getRecvThreadCPUids();

获取连接池中所有连接的接收线程绑定到 cpu 的情况。如果接收线程未绑定到 cpu,则相应的 value 将为 -1。

7.5.7

4.3.1.21.7 getSession()
public abstract Session getSession();

使用所有 SessionFactory 属性创建要与集群一起使用的 Session。

表 4.71 getSession()

参数 描述
返回值 会话

4.3.1.21.8 getSession(Map)
public abstract Session getSession(Map properties);

创建要与集群一起使用的会话,覆盖某些属性。属性 PROPERTY_CLUSTER_CONNECTSTRING、PROPERTY_CLUSTER_DATABASE 和 PROPERTY_CLUSTER_MAX_TRANSACTIONS 不可覆盖。

表 4.72 getSession(Map)

参数 描述
properties 覆盖此会话的某些属性
返回值 会话

4.3.1.21.9 reconnect()
public abstract void reconnect();

使用最近指定的超时值重新连接此会话工厂。超时值可能已在原始会话工厂属性中指定,也可能已通过应用程序调用 reconnect(int timeout) 进行更改。

另请参见
reconnect(int)

7.5.7

4.3.1.21.10 reconnect(int)
public abstract void reconnect(int timeout);

使用指定的超时值断开连接并重新连接此会话工厂,并更改保存的超时值。这是一种重量级方法,应该很少使用。它适用于 clusterj 所在进程已失去与集群的连接且无法正常运行的情况。重新连接分多个阶段进行。首先,会话工厂设置为 Reconnecting 状态,并启动一个重新连接线程来管理重新连接过程。在 Reconnecting 状态下,getSession 方法会抛出 ClusterJUserException,连接池会静默,直到所有会话都关闭。如果会话在 timeout 秒后仍无法正常关闭,则会强制关闭会话。接下来,连接池中的所有连接都将关闭,这将释放他们在集群中的连接插槽。最后,使用原始连接池属性重新创建连接池,并将状态设置为 Open。重新连接过程是异步的。要观察过程的进度,请使用 currentState 和 getConnectionPoolSessionCounts 方法。如果超时值为非零值,则 clusterj 实现将在检测到网络故障时自动重新连接。如果超时值为 0,则会禁用自动重新连接。如果此会话工厂的当前状态为 Reconnecting,则此方法将静默不执行任何操作。

表 4.73 reconnect(int)

参数 描述
timeout 超时值(以秒为单位);0 表示禁用自动重新连接

7.5.7

4.3.1.21.11 setRecvThreadActivationThreshold(int)
public abstract void setRecvThreadActivationThreshold(int threshold);

设置连接池中所有连接的接收线程激活阈值。16 或更高表示接收线程永远不会用作接收器。0 表示接收线程始终处于活动状态,并保留其自身专有使用的轮询权,有效地阻止所有用户线程成为接收器。在这种情况下,应注意确保接收线程不会与用户线程争夺 CPU 资源;最好将其锁定到 CPU 以供其自身专有使用。默认值为 8。

异常

ClusterJUserException

如果值为负数

ClusterJFatalInternalException

如果方法因某种内部原因而失败。

7.5.7

4.3.1.21.12 setRecvThreadCPUids(short[])
public abstract void setRecvThreadCPUids(short[] cpuids);

将接收线程绑定到连接池中所有连接的 cpuid。指定 -1 取消绑定连接的接收线程 cpu。cpuid 必须介于 0 和机器中的 cpu 数量之间。

异常

ClusterJUserException

如果 cpuid 非法,或者 cpuids 中的元素数量与连接池中的连接数量不相等。

ClusterJFatalInternalException

如果绑定因某种内部原因而失败。

7.5.7