6

私はejb-3互換のejbを持っています。

@Remote
interface Hai{
     String sayHai();
}
Stateless(name = "xxx", mappedname="yyy")
public class HaiImpl implements Hai{
    public String sayHai(){
        return "Hai";
    }
}

そして、この EJB のスタブを生成する必要があります。しかし、websphere ツールや maven ツールは使いたくありません。jdkを使用してスタブを生成する方法はありますか?

リモート クライアントを作成する場合

 Hai hai = (Hai)ctx.lookup("yyy#com.zz.Hai");
 System.out.println(hai.sayHai());

weblogic または jboss で動作しますが、websphere では、ejb 3 であっても、次のように記述する必要があります。

Object o = ctx.lookup("yyy");
Hai hai =    (Hai)javax.rmi.PortableRemoteObject.narrow(o,Hai.class);
System.out.println(hai.sayHai());

この場合、スタブがクライアントに存在しない場合、例外がスローされます。websphere ejb スタブ ジェネレーター ツールを使用してスタブを生成する方法があります。しかし、プラットフォーム固有のツールは使いたくありません。

4

2 に答える 2

4

いいえ、WAS_HOME/bin/createEJBStubs を使用する必要があります。通常はスタブの生成に使用される Java SDK に含まれる rmic コマンドは、java.rmi.Remote を拡張しない「純粋な」EJB 3 リモート インターフェースでは使用できません。

アプリケーション クライアント コンテナー (WAS_HOME/bin/launchClient) を使用する場合、または「クライアント」が別のサーバーである場合は、スタブを生成する必要はありません。コンテナーがスタブを生成します。管理対象外のシンクライアントを使用している場合にのみ、createEJBStubs を使用する必要があります。

于 2012-07-25T16:27:44.700 に答える
0

createEJBStub スクリプト用のmaven-plugin ラッパーを作成しました。

なんで?

これにより、展開後にアプリケーションに対して CI セットアップの一部として実行されるテスト Maven プロジェクトを構築できます。

より具体的には、maven と一緒に使用すると、テスト プロジェクトで次のことが可能になります。

  1. Maven 依存関係管理を利用して、内部の nexus リポジトリに公開する API jar をプルします
  2. 「ソースの生成」Maven ライフサイクルの一部としてスタブ クラスを作成する
  3. EJB を使用してアプリケーション サーバーに対して junit テスト ケースを実行し、統合テストを行います。
于 2013-05-08T17:06:32.740 に答える