- - PR -
分散環境のEJB呼び出し
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-10-12 13:12
EJBの呼び出し元とは物理的に別のサーバーのEJBを呼び出したいのですが
イメージがわきません。(EJB2.0使用) 現状は、以下のようにEJBを呼んでいますが、これだと呼び出し元にある EJBを呼んでしまいます。 Context initialContext = new InitialContext(); Object obj = (Object) initialContext.lookup("java:comp/env/ejb/xxxBean"); xxxBeanHome home = (xxxBeanHome) PortableRemoteObject.narrow(obj, xxxBeanHome.class); xxxBeanRemote remote = home.create(); ResultData resultData = remote.xxx(); web.xml <ejb-ref> <ejb-ref-name>ejb/xxxBean</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <home>xxxBeanHome</home> <remote>xxxBeanRemote</remote> </ejb-ref> 別のサーバーのIPやホスト名等を指定して呼ぶのかなぁと思うのですが どこで指定するのでしょう? |
|
投稿日時: 2005-10-12 19:07
公開するEJBのJNDIの設定で一緒に設定できたかと思います。
weblogicであれば、weblogic.xmlにこんな感じで。 <reference-descriptor> <ejb-reference-description> <ejb-ref-name>ejb/HogeHogeEJB</ejb-ref-name> <jndi-name>t3://別サーバのURL:ポート/JNDI名</jndi-name> </ejb-reference-description> </reference-descriptor> JNDI名の前に記述すればOKかと。複数サーバにEJBがデプロイされている場合は、 ポート番号の後にカンマで区切りでURLを続けて書けばOKです。 他のJ2EEサーバでは試した事無いので外してたらごめんなさい。 |
|
投稿日時: 2005-10-13 10:45
mediaさんありがとうございます。
まだ、環境が手元になくて試せないので下調べ更に行っています。 そこで↓のような記述をみつけたのですがInitialContextに URLを指定しても出来るんでしょうか。 Properties p = new Properties(); p.put(Context.INITIAL_CONTEXT_FACTORY, xxxFactory?); p.put(Context.PROVIDER_URL, URL); Context ctx = new InitialContext(p); Object home = ctx.lookup(JNDI名); ちなみに、コンテナは富士通のInterstageです。 初めて使うもので勝手がよくわからないです。 |
|
投稿日時: 2005-10-13 12:46
InitialContextにURLを渡す方法でも可能かと思いますが、DDに定義しておいた
方が、 ・実装コードは接続先を知らなくていい ・登録されているjndi-name単位で接続先が制御可能 等のメリットがあるかと思います。 DDであれば、デプロイされている状態からDDの書き換えも可能だたと思います。 コードに書くと変更があった場合再ビルド&デプロイが必要になります。 Interstageなら http://interstage.fujitsu.com/jp/technical/tips/tip024003_29.html に書かれてる、Interstage.xmlに記述すれば解決するんじゃないですかね。 |
|
投稿日時: 2005-10-14 13:32
どのアプリケーションサーバでも使えるかどうかはわかりませんが、一般的な方法としては
jndi.propertiesで定義する方法があります。 java.naming.factory.initial=ファクトリクラス名 java.naming.provider.url=プロバイダURL と記述したjndi.propertiesファイルをクラスパスの通っている場所(Webアプリケーションで あれば通常はWEB-INF/classes)に置いておけば最初のコードのままで動くはずです。 |
1