配置 Enterprise JavaBeans 非同步方法

您可以將 EJB 儲存器配置成使用 ContextService 實例,以控制當呼叫非同步 EJB 方法時,要擷取哪些受管理執行緒環境定義。在啟動 EJB 方法之前,會將所擷取的環境定義建立在非同步執行緒上。

關於這項作業

當啟用應用程式安全時,只會將安全環境定義傳播到啟動了非同步 EJB 方法的執行緒。當您需要將其他的環境定義傳播到非同步執行緒時,配置 ContextService 實例來置換預設行為非常有幫助。

在非同步執行緒上啟動 EJB 方法之前,EJB 儲存器會先建立與 EJB 相關聯的下列環境定義:

  • 類別載入器環境定義
  • Java™ EE meta 資料環境定義

因此,您不必從呼叫端執行緒傳播這些環境定義,因為 EJB 儲存器會以目標 EJB 相關聯的環境定義,來取代它們。

程序

  1. server.xml 檔中配置應用程式伺服器,使其同時包含支援非同步方法的 EJB 特性和並行特性。例如,在 server.xml 檔中新增下列:
    <featureManager>
        <feature>appSecurity-2.0</feature>
        <feature>concurrent-1.0</feature>
        <feature>ejbLite-3.2</feature>
    </featureManager>
  2. server.xml 檔中配置 ContextService 實例,以擷取和傳播所要的環境定義。這個範例是定義一項 ContextService 配置,且其等同於非同步方法的預設行為:
    <contextService id="SameAsNoConfigAsyncContextService">
        <securityContext/>
    </contextService>

    如果安全環境定義沒有包含在 ContextService 定義中,就不會擷取和傳播它。ContextService 定義會取代預設行為,而不是新增到預設行為。

    視您要擷取和傳播的其他環境定義而定,可能需要其他特性和環境定義特定的配置。

  3. server.xml 檔中,將 EJB 儲存器配置成使用特定的 ContextService 配置。例如:
    <ejbContainer>
        <asynchronous contextServiceRef="EJBAsyncContextService"/>
    </ejbContainer>

指示主題類型的圖示 作業主題

檔名:twlp_config_ejbasynch.html