2

(Java EE) InitialContext クラスに渡される「env」パラメータの「java.naming.provider.url」プロパティに完全修飾ホスト名を使用するにはどうすればよいですか。IP アドレスを渡すか、完全修飾 (host.domain...) ホスト名を渡すかに関係なく、lookup( name) 呼び出しは失敗し、ホスト名が見つからないと言って失敗します。ドメインのないホスト。たとえば、mypc.somedomain.net が 1.2.3.4 の場合、「1.2.3.4」または「mypc.somedomain.net」を入力すると、次のように失敗します。

javax.naming.CommunicationException java.rmi.UnknownHostException: mypc

DNS サーバーを InitialContext に渡す必要がありますか? 基盤となる OS に仕事をさせるだけでは、何が賢明ではないのでしょうか? (「ping mypc.somedomain.net」のように、うまくいきます)

クライアントとサーバーは同じマシン上にも同じサブネット上にもないため、完全修飾ホスト名を使用する必要があります。これを「Robin」用に少し改良するために、通常は別の JVM でクライアント プロセスを実行します。この JVM は、通常、localhost 上のサーバーにアクセスするか、場合によっては同じサブネット/ドメイン (例: 「testbox」) 上の別のホストにアクセスします。完全修飾名。

また、「jns://」プレフィックスと「:1099」サフィックス (例: 「jns://mypc.somedomain.net:1099」) を追加してみましたが、これらは「testbox」を機能させるために必要なわけではありません。同じ例外が発生しました。

私はグーグルで検索し、このエラー (InitialContext / JBoss -> UnknownHostException) または同様の質問のインスタンスをいくつか見つけましたが、回答はありません。ああ。

4

2 に答える 2

1

よく調べてみると、これは次の複製です。

異なるネットワーク上にある場合の JBoss UnknownHostException

サーバーが自身の (完全修飾された) 名前を認識するような方法で JBoss サーバーが開始されない限り、EJB クライアントは JBoss EJB サーバーにアクセスできません。

私の Windows XP PC はその「短い」名前を認識していますが、参照されている質問に記載されている -b パラメータ (バインド) を使用して jboss に完全修飾名を付ける必要があります。JNDI (または EJB?) プロトコルに関する何かには、ホストが見つかった後、その名前を照会し、再度検索する (または検索しない) ある種の「ダブル ルックアップ」が必要です。図に行きます。アンチスプーフィング保護???

于 2009-05-26T21:45:05.877 に答える
0

最後のステートメントは、クライアントをスタンドアロン アプリケーションとして実行していることを意味します。この場合、Java EE コンテナーで実行されていないため、アプリ サーバーのドキュメントのどこかに定義されているように、シン クライアントを実行するための適切な構成を行う必要があります。

完全修飾名から InitialContext を検索しようとするだけでは機能しません。JBoss ではこれを行ったことはありませんが、WAS では行っています。それが機能するために必要なJBoss jarと構成を見つける必要があります。

WAS のように、通常の方法で Java EE リソースへのフル アクセスを可能にするクライアント コンテナを作成する何らかの手段を備えている場合があります。

于 2009-05-26T19:31:08.207 に答える