1つのネットワークカードを搭載した同じマシンに複数のJBoss5.1.xインスタンスを設定した経験やアドバイスはありますか?
これが私がしたことです:
この時点で2つのインスタンスがありますが、おそらくいくつかのポートの競合が原因で、2番目のインスタンスは正しくロードされません。例:httpポートは両方のインスタンスで8080になり、C:\ myjboss\server\all\conf\bindingservice.beans\META-INFの49行目から取得されます。\bindings-jboss-beans.xmlファイル。サーバーのロードの早い段階で、同じファイルの行#63から値を取得します。なぜそれが49行目からポート設定の一部を取得し、63行目から他の部分を取得するのかわかりません。混乱しています。
私も試しました:。\ run.bat -Djboss.service.binding.set = ports-01 -c ports-01そしてそれはほとんど違いがありませんでした。
私が間違っていることについて何か考えはありますか?
私はそれを自分で動かしました。答えは次のコマンドでした:
。\ run.bat -Djboss.service.binding.set = ports-01 -c ports-01
。\ run.bat -Djboss.service.binding.set = ports-02 -c ports-02
また、server/defaultをserver/ports-01とserver/ports-02という2つの新しいディレクトリにコピーする必要がありました...
次に、server\ports-01\conf\bindingservice.beans\META-INFで、インスタンスports-02、ports-03、および「default」への参照を削除する必要がありました。
次に、server\ports-02\conf\bindingservice.beans\META-INFで、インスタンスports-01、ports-03、および「default」への参照を削除する必要がありました。
次に、最後に、サーバーディレクトリのデフォルトインストールから「標準」、「Web」、および「デフォルト」ディレクトリを削除しました。
次に、上記のコマンドを使用して両方のサーバーを実行しましたが、すぐに使用可能で動作します。
また、個別のインスタンスではなくクラスター化して実行するバッチファイルを次に示します。
@echo off
start .\bin\run.bat -c ports-01 -g MyLocal -u 239.255.100.100 -b 127.0.0.1 -Djboss.messaging.ServerPeerID=1 -Djboss.service.binding.set=ports-01
@echo Wait until first server finishes starting and then hit
@echo any key to start the second server in the cluster...
pause
start .\bin\run.bat -c ports-02 -g MyLocal -u 239.255.100.100 -b 127.0.0.1 -Djboss.messaging.ServerPeerID=2 -Djboss.service.binding.set=ports-02
Run.batの名前を変更して-cinstance-nameを実行する新しいrun.batを作成する複数のjbossインスタンスを設定することもできます。その後、Jbossをサービスとして起動し、run.batを適切に呼び出すことができます。
BindingManagerを使用する代わりに、ネットワークインターフェイスに複数のアドレスを割り当て(少なくともネットワークを制御している場合)、各jbossインスタンスに独自のアドレスを使用して実行させることができます(_-b
_オプションを使用してrun.(bat|sh)
)。これは、ローカルループバックインターフェイス(127.0.0.1、127.0.0.2、...)でも可能です。
複数のIPアドレスに関するMafroの投稿へのクイックフォローアップ-単一のホストで実行するインスタンスの数によっては、複数のIPアドレス指定スキームが最も安定している場合があります。単一のホストで4〜5個のJBossインスタンスを取得し始めると(アプリで有効になっているJ2EEサービスがある場合はそれによっても)、「ポート」実装を使用するとすぐにポート競合の問題が発生する可能性があります。
複数のIPアドレスを使用すると、すべてのJ2EEおよびJBossサービスをデフォルトのポートで実行でき、複数のインスタンスを実行するときに発生する「ポートの競合シナリオの追跡」の多くを回避できます。
最後に、JBoss wikiによると、複数のIPアドレスを使用することは、特に本番環境での「推奨されるソリューション」です- http://community.jboss.org/wiki/ConfigureMultipleJBossInstancesOnOnemachine 。 Binding Managerを使用してJBossサービスとアプリケーションを設定し、競合を回避するための追加リソースについては、そのリンクを参照してください。
RMIまたはリモーティングを使用しない場合は、実際にはjbossの設定を微調整して1つのポートのみを使用することができます。実行するのは非常に面倒な作業(大量の構成ファイル)ですが、本当に必要な場合は可能です。
これを行うには:-使用しないすべてのサービスを削除します-呼び出し側を削除できない場合は、おそらくトランスポート= "local"を設定して、メモリトランスポートで使用することができます-残りのサービスのポートを-に設定します1-次のシステムプロパティを設定して、arjuna管理ポートを無効にします。com.arjuna.ats.arjuna.coordinator.transactionStatusManagerEnable= NO com.arjuna.ats.arjuna.recovery.recoveryListener = NO
絶対に変更する必要のある設定ファイル:-jboss-service.xml-不要なすべてのサービスを無効にします-legacy-invokers-service.xml(可能であればレガシーサービスを削除します)-messaging/messagesaging-bisocket-service.xml:変更ビソケットの代わりにローカルに転送
さらにいくつかのファイルがあります。
残っているのは、Webポートと、まだ使用法がわからないランダムに選択された他の1つのポートをリッスンするjbossです。これにより、1つのホストで複数のインスタンスを簡単に実行できるようになります。