3.2.12.4. EJB 非同期メソッド呼び出しの移行


概要

EJB 3.1 仕様では、非同期メソッド呼び出しを行う機能が導入されました。この機能の導入前に、一部のアプリケーションサーバーはプロプライエタリーの非同期機能を提供していました。JBoss EAP 4.x は org.jboss.ejb3.asynchronous パッケージでクラスを提供し、JBoss EAP 5.x はこの目的のために org.jboss.ejb3.common.proxy.plugins.async.AsyncUtils クラスを提供していました。これらのクラスは JBoss EAP 6 ではサポートされず、置き換える必要があります。以下の例は、JBoss EAP 6 で非同期メソッド呼び出しを行う方法を示しています。

手順3.27 非同期セッション Bean とクライアントの作成

  1. 非同期セッション Bean メソッドを作成します。
    以下の例では、sayHelloAsync() メソッドは @Asynchronous アノテーションを使用して非同期としてマークされます。型 String で、必要な Future クラス実装を返します。
    import javax.ejb.Remote;
    import javax.ejb.SessionContext;
    import javax.ejb.Stateless;
    import javax.ejb.TransactionAttribute;
    import javax.ejb.TransactionAttributeType;
    import javax.interceptor.Interceptors;
    
    import java.util.concurrent.Future;
    import javax.ejb.AsyncResult;
    import javax.ejb.Asynchronous;
    
    @Stateless(name="Hello")
    @Remote(Hello.class)
    public class HelloBean implements Hello {
    
        @Asynchronous
        public Future<String> sayHelloAsync() {
           return new AsyncResult<String>("Hello");
        }
    }
    Copy to Clipboard Toggle word wrap
  2. クライアントコードを作成します。
    利用可能な Future.get() メソッドの 1 つを使用して EJB を検索し、非同期メソッドを呼び出します。以下の例では、待機時間を timeout 引数および unit 引数で指定された値に制限します。
    Future<String> future = ejbObject.sayHelloAsync();
    String response = future.get(timeout, unit);
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat