JNDI and EJBについて


JNDI
(The Java Naming and Directory Interface
,
Java
名前とディレクトリインタフェース
)
グループは
Java
アプリケーションで名前とディレクトリサービスにアクセスする
API
.開発者には、さまざまなネーミングおよびディレクトリ・サービスを検索およびアクセスするための汎用的で統一的な方法が提供されています.に頼る
JNDI
提供するインタフェースは,ユーザ,機器,ネットワーク,オブジェクトサービスなどを名前で位置決めできる.
 
ネーミングサービス
のように
DNS
同様に、ネーミングサーバによるサービスのほとんどは
J2EE
サーバには名前付きサーバが含まれています.
 
ディレクトリサービス
:簡略化された
RDBMS
システムは、ディレクトリのプロパティによって簡単な情報を保存します.ディレクトリ・サービスは、マイクロソフトなどのディレクトリ・サーバによって実現されます.
ACTIVE DIRECTORY
など.
 
JNDI
のメリット
:
(
1
)には、同じ名前とディレクトリサービスが多数含まれています.
API
名前付きまたはディレクトリ・サービスへのアクセスを呼び出します.
(
2
)は、複数のネーミングサービスとディレクトリサービスを同時に接続できます.
(
3
)を許可します.
JAVA
オブジェクトまたはリソースを関連付け、オブジェクトまたはリソースの物理を知る必要はありません.
ID
.
(
4
)汎用インタフェースを使用して異なる種類のディレクトリサービスにアクセスする
(
5
)を使用して、開発者が1つのタイプのネーミングまたはディレクトリサービスの顧客を集中的に使用し、実現できるようにする
API
で行ないます.
 
コンテキスト
:
0
または複数のバインド構成.たとえば
java/MySql
,
java
コンテキスト(
context
),
MySql
名前を付ける
 
サブコンテキスト
(
subConext
)をクリックします.たとえば
MyJNDITree/ejb/helloBean
,
ejb
サブコンテキスト
.
 
なぜなら
JNDI
インタフェースのセットなので、インタフェース仕様に従ってプログラミングするだけでいいです.パスするには
JNDIはリソースアクセスを行い、コンテキストを初期化するパラメータを設定する必要があります.
、主に設定
JNDIドライバのクラス名(java.naming.factory.initial)とネーミングサービスを提供するURL(java.naming.provider.url)
.
 
なぜなら
Jndi
の実装製品はたくさんあります.だから
java.naming.factory.initial
の値は
JNDI
サーバによって異なります
,
java.naming.provider.url
の値には、ネーミング・サービスを提供するホスト・アドレスとポート番号が含まれます.
 
アクセス
Jboss
サーバのサンプルコード:
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
InitialContext = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");

アクセス
Sun
アプリケーションサーバのサンプルコード:
Properties props = new Properties();
props.setProperty("java.naming.factory.initial",
"com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("java.naming.provider.url", "localhost:3700");
InitialContext = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("com.foshanshop.ejb3.HelloWorld");

アクセス
Weblogic10
アプリケーションサーバのサンプルコード:
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
props.setProperty("java.naming.provider.url", "t3://localhost:7001");
InitialContext = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean#com.foshanshop.ejb3.HelloWorld");

JBOSS
環境下
JNDI
ツリーの命名規則:
(
1
)
java:copm 
このコンテキスト環境とそのサブコンテキスト環境は、それに関連する特定のアプリケーションコンポーネントにのみアクセスおよび使用できます.
(
2
)
java
:サブコンテキスト環境とバインドされたオブジェクトは、
Jboss
サーバ仮想マシン内のアプリケーションアクセス
(
3
)その他のコンテキスト環境 シーケンス化が実現される限り、リモート・ユーザーによって呼び出されます.
EJBをJBOSSにリリースすると
君はここにいる
jbossの管理プラットフォームは彼女たちのJNDI名を見ます
と入力します.
URL http://localhost:8080/jmx-console/
,
をクリックします
service=JNDIView
「link、現れたpageで見つけた」
List of MBean operations:
」バーの「list()」メソッド、click「Invoke」button、次のインタフェースが表示されます
上図に見える
HelloWorld
セッション
Bean

JNDI
パス、
JNDI
パス名の構成規則は「上位レベル名」です.
/
下位レベル名
を選択します.
”/”
ぶんかつ
.
HelloWorld
セッション
Bean

JNDI
パス名:
HelloWorldBean/remote
 
 
以下に重点的に説明する
Jboss EJB JNDI名のデフォルトの命名規則
、命名規則は次のとおりです.
1>
場合
EJB
梱包する
接尾辞
*.ear

J2EE
ファイルのパブリッシュ
、デフォルト
JNDI
パス名は
ローカルインタフェースへのアクセス:
EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local
リモートインタフェースへのアクセス:
EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote
例:
EJB HelloWorld
パッケージ名
HelloWorld.ear

J2EE
アプリケーション、リモートインタフェースへのアクセス
JNDI
名前は次のとおりです.
HelloWorld/HelloWorldBean/remote
 
2>
場合
EJB
適用
次のようにパッケージ化
*.jar
のパブリケーションファイル
,
デフォルト
JNDI
パス名は
ローカルインタフェースへのアクセス:
EJB-CLASS-NAME/local
リモートインタフェースへのアクセス:
EJB-CLASS-NAME/remote
例:
HelloWorld
アプリケーションパッケージ
HelloWorld.jar
ファイル、リモートインタフェースにアクセスする
JNDI
名前は次のとおりです.
HelloWorldBean/remote
 
注意:
EJB-CLASS-NAME
パッケージ名は付いていません
のように
com.foshanshop.ejb3.impl.HelloWorldBean
取るだけ
HelloWorldBean
.
 
現在、ネット上で多くの教材を取得しています.
JNDI
パス名の方式は適用されません
jboss
次のようになります.
HelloWorld helloworld = (HelloWorld) ctx.lookup(HelloWorld.class.getName());
この方法は
Sun Application Server
および
glassfish
 
 
  
カスタムJNDIネーミング
デフォルト
JNDI
ネーミング・ルールについては説明していますが、カスタム名が必要な場合があります.にある
Jbossで
カスタマイズするには
JNDI
名前、使用可能
@LocalBinding
および
@RemoteBinding
コメント
 
キーコード(bean interfaceの前にbindingコメントを付けるだけ):
import org.jboss.annotation.ejb.RemoteBinding;
...
@Remote
@RemoteBinding (jndiBinding="testbinding/myAccount")
public interface MyAccount extends Serializable {
    publicint Add(int a, int b);
    publicint getResult() ;
}
 
   client      EJB    :
InitialContext ctx = new InitialContext(props);
MyAccount bean1 = (MyAccount) ctx.lookup("testbinding/myAccount");