3

CORBAを介してEJB(または基盤となるMBean)にアクセスできるようにする方法に関するチュートリアルまたは追加情報を探しています。

これが私が見つけたすべてです: http ://www.jboss.org/jbossiiop

既存のCORBAサーバー(Javaベースですが非標準)があり、JBossMBeanへの呼び出しを許可したいと思います。このMBeanは、EJB(v2.1)を使用したRMIを介してすでに公開されています。

現在のAppServerターゲットバージョンはjboss-eap-4.3です。


編集:私の質問が曖昧すぎて答えられないことを願っていますので、ここに更新があります:

JBossで実行されているEJBを、リモートの別のサーバーで実行されているCorbaORBに登録したいと思います。少なくとも私はすると思う。既存のCORBAクライアントは、JBossEJBを介して実装しようとしている定義済みのIDL/インターフェースを介してサービスに接続します。この時点で、上記のクライアントは同じインターフェイスの複数のインスタンスに接続して、このインターフェイスを介して情報を取得し、ローカル(同じプロセス)サービスを管理します。このCORBAIDLの単なる別の実装として、JBossEJBをドロップインしたいと思います。

私のCORBAの理解は、そもそも錆びていて弱いので、それほど遠くはありません。JBossでORBを簡単に実行できますが、「レガシー」CORBAORBがそれを見つけられるようにバインディングを設定する方法がわかりません。これを機能させるためにJBoss実装の任意の部分を変更できますが、他のサーバーを変更することは困難です。

EJBがそれ自体をリモートサーバー(ala jndi)に登録する方法はありますか?既存のクライアントは、jboss固有のクラスを追加せずにJacorbに接続できますか?

4

2 に答える 2

3

つまり、アダプターを実装し、それをJbossにデプロイし、リモートのNamingServiceに登録する必要があります。アダプタの実装では、MBeanを呼び出します。

詳細はこちらCORBAidlがあり、スタブとスケルトンを生成します。

interface Stock {
    int getQuote( in string company);
};

必要な実装を提供します

public class StockImpl extends StockPOA {
  public int getQuote(String company) {
     //forward a call to MBean here
  }
}

通常のCORBA登録を行います。何かのようなもの:

org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(...);
org.omg.PortableServer.POA poa = org.omg.PortableServer.POAHelper.narrow(orb.resolve_initial_references("RootPOA"));

poa.the_POAManager().activate();

NamingContextExt nc = NamingContextExtHelper.narrow(orb.resolve_initial_references("NameService"));

NameComponent [] name = new NameComponent[1];

org.omg.CORBA.Object o = poa.servant_to_reference( new StockImpl(orb,poa));
name[0] = new NameComponent( "Stock", "server");
nc.bind(name, o);

orb.run();

これで、オブジェクトがリモートのNamingServiceに登録され、CORBAを介してアクセスできるようになりました。

JBOSSクラスパスにCORBAjarを含める必要があります。

于 2011-02-27T10:13:06.973 に答える
1
  1. Corbaオーブはソケットリスナーであるため、JBossの制御下にあるもの、つまり標準オーブを使用するのが最適です。

    ObjectName ORB_NAME = ObjectNameFactory.create( "jboss:service = CorbaORB"); ORB orb =(ORB)server.getAttribute(ORB_NAME、 "ORB");

  2. Corbaサービスを自動的に開始するには、JBoss Service mbeanで実行します:http: //community.jboss.org/wiki/examplehelloworldservice

  3. IDLをコンパイルする必要をなくすために、動的呼び出しインターフェースを使用できます。Axis2 CORBAモジュールがどのように機能するかをご覧ください:http ://wso2.org/library/2807

  4. JBossの「all」設定を使用する場合、クラスパスにOrbは必要ありません。これにはCorbaが含まれます。

于 2011-03-18T12:20:30.640 に答える