- 4.3.1.21.1 概述
- 4.3.1.21.2 close()
- 4.3.1.21.3 currentState()
- 4.3.1.21.4 getConnectionPoolSessionCounts()
- 4.3.1.21.5 getRecvThreadActivationThreshold()
- 4.3.1.21.6 getRecvThreadCPUids()
- 4.3.1.21.7 getSession()
- 4.3.1.21.8 getSession(Map)
- 4.3.1.21.9 reconnect()
- 4.3.1.21.10 reconnect(int)
- 4.3.1.21.11 setRecvThreadActivationThreshold(int)
- 4.3.1.21.12 setRecvThreadCPUids(short[])
SessionFactory 代表一个集群。
public interface SessionFactory {
// Public Methodspublic 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);
}
public abstract void close();
关闭此会话工厂。释放所有资源。将当前状态设置为 Closed。关闭后,对 getSession 的调用将抛出 ClusterJUserException。
public abstract State currentState();
获取此会话工厂的当前状态。
- 自
7.5.7
- 另请参见
- com.mysql.clusterj.SessionFactory.State
public abstract List<Integer> getConnectionPoolSessionCounts();
获取一个列表,其中包含连接池中每个连接的打开会话数量。
- 自
7.3.14, 7.4.12, 7.5.2
public abstract int getRecvThreadActivationThreshold();
获取连接池中所有连接的接收线程激活阈值。16 或更高表示接收线程永远不会用作接收器。0 表示接收线程始终处于活动状态,并保留其自身专有使用的轮询权,有效地阻止所有用户线程成为接收器。在这种情况下,应注意确保接收线程不会与用户线程争夺 CPU 资源;最好将其锁定到 CPU 以供其自身专有使用。默认值为 8。
- 自
7.5.7
public abstract short[] getRecvThreadCPUids();
获取连接池中所有连接的接收线程绑定到 cpu 的情况。如果接收线程未绑定到 cpu,则相应的 value 将为 -1。
- 自
7.5.7
public abstract Session getSession();
使用所有 SessionFactory 属性创建要与集群一起使用的 Session。
public abstract Session getSession(Map properties);
创建要与集群一起使用的会话,覆盖某些属性。属性 PROPERTY_CLUSTER_CONNECTSTRING、PROPERTY_CLUSTER_DATABASE 和 PROPERTY_CLUSTER_MAX_TRANSACTIONS 不可覆盖。
public abstract void reconnect();
使用最近指定的超时值重新连接此会话工厂。超时值可能已在原始会话工厂属性中指定,也可能已通过应用程序调用 reconnect(int timeout) 进行更改。
- 另请参见
- reconnect(int)
- 自
7.5.7
public abstract void reconnect(int timeout);
使用指定的超时值断开连接并重新连接此会话工厂,并更改保存的超时值。这是一种重量级方法,应该很少使用。它适用于 clusterj 所在进程已失去与集群的连接且无法正常运行的情况。重新连接分多个阶段进行。首先,会话工厂设置为 Reconnecting 状态,并启动一个重新连接线程来管理重新连接过程。在 Reconnecting 状态下,getSession 方法会抛出 ClusterJUserException,连接池会静默,直到所有会话都关闭。如果会话在 timeout 秒后仍无法正常关闭,则会强制关闭会话。接下来,连接池中的所有连接都将关闭,这将释放他们在集群中的连接插槽。最后,使用原始连接池属性重新创建连接池,并将状态设置为 Open。重新连接过程是异步的。要观察过程的进度,请使用 currentState 和 getConnectionPoolSessionCounts 方法。如果超时值为非零值,则 clusterj 实现将在检测到网络故障时自动重新连接。如果超时值为 0,则会禁用自动重新连接。如果此会话工厂的当前状态为 Reconnecting,则此方法将静默不执行任何操作。
- 自
7.5.7
public abstract void setRecvThreadActivationThreshold(int threshold);
设置连接池中所有连接的接收线程激活阈值。16 或更高表示接收线程永远不会用作接收器。0 表示接收线程始终处于活动状态,并保留其自身专有使用的轮询权,有效地阻止所有用户线程成为接收器。在这种情况下,应注意确保接收线程不会与用户线程争夺 CPU 资源;最好将其锁定到 CPU 以供其自身专有使用。默认值为 8。
异常
-
ClusterJUserException
如果值为负数
-
ClusterJFatalInternalException
如果方法因某种内部原因而失败。
- 自
7.5.7