3

WebSphereを2つ別々にインストールしています。(実際には、1つはEJB3.0およびWebサービス機能パックを備えたWebSphereApplication Server V6.1であり、もう1つのサーバーはWebSphere ESB Server V6.2です)。ただし、ESBは実際にはWASの上に構築されているため、通常のWASサーバーが持つすべての構成設定があります。

ESBサーバーで、WAS6.1サーバーにデプロイされるEJB3.0として記述されたサービスを公開しようとしています。私の質問は、EJB2.1呼び出しを取得してEJB3.0を呼び出す方法ではありません。すでにそれを行っています。私の質問は、物理VM間でどのように呼び出すかです。WebSphere Application Serverは、ESBサーバーからの独自のセル/ノード/サーバーで実行されています。IBMの資料で読んだことから、WASに名前空間バインディングを設定して、別のWASインスタンスのリモートEJBを指すようにすることができます。したがって、JNDIを使用して、実際には別のWASインスタンスに存在する1つのWASインスタンスでBeanをルックアップできます。このメソッドの利点は、必要なEJBの場所がコンテナーレベルに抽象化されていることです。

それができるように聞こえます。(次のリンクを参照してください:http: //publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic = / com.ibm.websphere.express.doc / info / exp / ae / tnam_view_bindings.html)特に、EJBおよび間接名前空間バインディングのリンクをたどってください。

しかし、私はしばらくの間これに頭をぶつけてきました。それは理にかなっている。できるようです。そして、間接名前空間バインディングは最も有望に見えます。しかし、私はそれを完全に正しく機能させることができません。私のESBサーバーは、私が要求しているコンテキストでcomp / env/ejbが見つからないことについて不平を言い続けています。これには非常に戸惑いました。

誰かが以前にこの種のことをしたことがあるかどうか疑問に思っています。これをWASでどのように設定したかについて具体的な例を教えてください。どんな助けでも大歓迎です

4

3 に答える 3

4

それ以来、私はこれを行う方法についてIBMと話し合い、彼らの答えに驚いていました。彼らは、同じサーバーまたはサーバークラスター内でEJBとEJBを話している場合は、IIOPを介してEJBRMIを使用すると答えました。JNDIを使用すると、これにより、Beanが実際に実行されている場所(クラスター化された環境)が抽象化されます。

ターゲットとソースが同じセルにあるかどうかに関係なく、あるサーバー(またはサーバー・クラスター)から別のサーバー(またはサーバー・クラスター)に移動する場合、IBMはメッセージングまたはWebサービスを使用することをお勧めします。彼らは、アプリケーションが互いに「結び付けられる」のを防ぐために、アプリケーション間の抽象化のより良い方法であると感じました。彼らは、EJBにCORBAを介してRMIを話させることができると言っていましたが、絶対に必要な場合にのみそうするように言っていました。そしてもちろん、CORBAを介して着信するためのIPとポート番号を知っている必要があります(クラスター環境の場合は、各クラスターメンバーの時間を知る必要があります)。

繰り返しますが、この種の私は驚きましたが、それは理にかなっています。特にWebSphereを使用している場合は、これらの考えを世界と共有したいと思っただけです。

于 2009-11-18T14:43:47.513 に答える
0

Tomcatから検索する方法

  1. tomcatのランタイムとしてIBMJDKを使用する
  2. bootstabポートを見つけ、PROVIDER_URLでiiopを使用します
于 2010-05-17T09:42:26.097 に答える
0

私は同じ問題で立ち往生していました。すべてのwebsphereとibmorbjarを含めようとした後、この記事はibmで見つかりました。OracleJDKクライアントを使用してWebSphereApplicationServerでEJBおよびその他のリソースを検索する方法-http ://www-01.ibm.com/support/docview。 wss?uid = swg21382740

基本的に、WsnInitialContextFactoryの代わりにCNCtxFactoryを使用しました

//props.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");
Hashtable env = new Hashtable();
            env.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
            env.put("java.naming.provider.url", iioppath);
于 2011-10-05T11:29:31.210 に答える