文件首頁
MySQL NDB Cluster API 開發人員指南
相關文件 下載本手冊
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();

取得此工作階段工廠的目前狀態。

自從

7.5.7

另請參閱
com.mysql.clusterj.SessionFactory.State
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,則對應的值將為 -1。

自從

7.5.7

4.3.1.21.7 getSession()
public abstract Session getSession();

建立要與叢集一起使用的 Session,使用 SessionFactory 的所有屬性。

表 4.71 getSession()

參數 描述
return 工作階段

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 覆寫此工作階段的某些屬性
return 工作階段

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,並且連線集區會處於靜止狀態,直到所有工作階段都關閉為止。如果工作階段在逾時秒數後未能正常關閉,則會強制關閉工作階段。接下來,會關閉連線集區中的所有連線,這會釋放它們在叢集中的連線插槽。最後,會使用原始連線集區屬性重新建立連線集區,並將狀態設定為 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);

將接收執行緒綁定到連線池中所有連線的 cpuids。指定 -1 以取消連線的接收執行緒 CPU 綁定。cpuid 必須介於 0 和機器中的 CPU 數量之間。

例外

ClusterJUserException

如果 cpuid 非法,或者 cpuids 中的元素數量與連線池中的連線數量不相等。

ClusterJFatalInternalException

如果由於某些內部原因導致綁定失敗。

自從

7.5.7