古いレコードを詳しく調べてみると、数年前に私が書いた(ただし、本質的にさまざまなソースからコンパイルされた)JBOSS 4.2.3マニュアルに出会いました。 そして、善を失わないために、尊敬されるHabrasocietyと少しの知識を共有することにしました。
あなたが1年以上の経験を持つ専門家である場合、自分にとって新しいものを見つけることはほとんどないでしょうし、時間を無駄にしないためにすぐに通り抜けることができます。 この記事は、次の人々に役立つ可能性があります。
- JavaでのITキャリアでキャリアを開始する学生
- Javaジュニア開発者
- ジュニアインプリメンテーションおよびテクニカルサポートエンジニア
- ジュニアデプロイおよびエンジニア向けビルド
JBoss 4.2.3のバージョンがかなり古いことは明らかです(8番目のJBossは現在関連しており、実際には「Jboss」ではありません)。しかし、大量の古いレガシーJavaコードと残酷な相互賞賛部門でのアプリケーション、それにもかかわらず、時々サポートされなければなりません。
内容
JBossとは何ですか?
JBossASは、オープンソースのJ2EEアプリケーションサーバーです。
アプリケーションサーバーは、アプリケーションの構築をサポートする手順(プログラム、機械操作、スクリプト)を効率的に実行するために設計されたソフトウェアプラットフォームです。
J2EE -Javaプラットフォーム、エンタープライズ版。 中規模および大規模企業のタスク用のサーバープラットフォームのアーキテクチャを説明するJava言語の仕様と関連ドキュメントのセット。 仕様の主な目標は、システムの運用中にアプリケーションのスケーラビリティとデータの整合性を確保することです。 J2EEは産業技術であり、主に信頼性、スケーラビリティ、柔軟性を必要とする高性能プロジェクトで使用されます。
JMX -Java Management Extensions(JMX)-アプリケーション、システムオブジェクト、デバイス(プリンターなど)、およびサービス指向ネットワークを管理および監視するためのツールを提供するJavaテクノロジー。 これらのリソースは、MBeanと呼ばれるオブジェクトによって表されます。
サポートされているアプリケーション形式
- WARアプリケーションアーカイブ。
- EARアプリケーションアーカイブ。
- SARアプリケーションアーカイブ。
- * -ds.xmlファイルは、外部データベースへの接続を定義します。
- MBeanサービス定義を含むXMLファイル。
- JBoss ASに直接EJBまたはその他のサービスオブジェクトを含むJARファイル
JBossに含まれるサーバー構成
最小限 -ロギングサービス、JNDIサーバー、およびデプロイメントスキャナーURLが含まれ、アプリケーションをデプロイできます。 これはクリーンなサーバーです。 Webコンテナー、EJBまたはJMSのサポートはありません。 これは、J2EE 1.4互換の構成ではありません。
EJB-エンタープライズJavaBean。 ビジネスロジックを含むサーバーコンポーネントを記述およびサポートするためのテクノロジの仕様。 これはJava EEの一部です。
JMS -Java Message Service。 J2EEプラットフォームで実行されているアプリケーションがメッセージを作成、送信、受信、および読み取りできるようにするメッセージングミドルウェア標準。 JMSを使用したコンポーネント間の通信は非同期で(プロシージャはメッセージへの応答を待機しません)、コンポーネントの実行とは無関係です。
デフォルト(デフォルト) -J2EE 1.4のベースこれらは、J2EEアプリケーションのデプロイに必要な最も一般的に使用されるサービスです。 JAXRサービス、IIOPサービス、またはクラスタリングサービスは含まれません。
XMLレジストリ用のJava API(JAXR)IIOP(Internet Inter-Orb Protocol)は 、TCP / IPのGIOPで使用されます。 IIOPは、GIOP抽象定義の具体的な実装です。
GIOP(General Inter-ORB Protocol) -分散オブジェクトシステムの抽象プロトコル
完全(すべて) 。 すべての構成と利用可能なすべてのサービス。 これには、デフォルト構成ではロードされないRMI / IIOPおよびクラスタリングサービスが含まれます。
各構成でどのサービスが構成されているかを知りたい場合は、ファイルを調べてください。
jboss-4.2.2 /サーバー/ <インスタンス名> / conf /
jboss-4.2.2 / server / <インスタンス名> / deploy
JBossサーバーの管理方法
JBossには、展開中に管理機能への不正アクセスを防ぐために保護または削除する必要のあるいくつかの管理方法が付属しています。
JMXコンソール (パス:
localhost :[ポート] / jmx-console /)
サーバーのシャットダウン、サービスの停止、新しいサービスの導入など、任意の管理パラメーターへのアクセスを提供します。 他のWebアプリケーションと同様にインストールすることも、アンインストールすることもできます。
Webコンソール (
localhostパス:[ポート] / web-console /)
アプレットとHTMLの組み合わせを使用し、JMX-console.warと同じレベルの管理機能へのアクセスを提供します。
Tomcat情報 (
localhostパス:[ポート] /ステータス?完全= true)
実行中のコンポーネントに関する情報
サーバー構成ディレクトリ構造
- conf-ディレクトリにはサーバー設定ファイルが含まれます。たとえば、JBoss-service.xml-メインの実行中のサービスを定義します。
- データ -ファイルシステムにコンテンツを保存するサービスがディレクトリを使用できます。 これは、サーバーの再起動後にサービスを復元できるデータが保存される場所です。 Hypersonicデータベースなどの一部のJBossサービスは、データをここに保存します。
- deploy-ディレクトリには、展開用のサービスが含まれます(サーバーの実行中に追加または削除できるサービス)。 また、現在のサーバー構成用のアプリケーションも含まれています。 指定されたディレクトリにアプリケーションパッケージ(JAR、WAR、およびEARファイル)を配置することにより、アプリケーションコードがデプロイされます。 カタログの更新が常に確認され、変更されたコンポーネントは自動的に再展開されます。
- lib-ディレクトリには、このサーバー構成に必要なJARファイル(「ホット」にデプロイされるべきではないJavaライブラリー)が含まれます。 ここで必要なライブラリファイルを追加できます。 たとえば、JDBCドライバーなど。 このディレクトリ内のすべてのJARは、起動時に共通の「クラスパス」にロードされます。
- log-ログファイルを書き込むためのディレクトリ。 JBossはロギングにlog4jパッケージを使用し、サーバー内の独自のアプリケーションで直接使用することもできます。 ロギングパラメータは、CONF / JBoss-log4j.xml設定ファイルを使用して設定できます。
- tmp-ディレクトリは、Jbossファイルの一時ストレージに使用されます
- work -Tomcatがディレクトリを使用してJSPをコンパイルします
ディレクトリの内容を確認する
- JBoss-service.xml-主なサービスとその設定を定義します。
- jndi.properties-このファイルは、引数なしでコンストラクターを使用してInitialContextが作成されるときにJBossサーバー内で使用されるJNDI InitialContextプロパティを定義します
- Java Naming and Directory Interface(JNDI)は、Javaクライアントが名前でデータとオブジェクトを開いて表示できるようにするディレクトリサービスとして編成されたJava APIです。
- JBoss-log4j.xml-ロギング設定
- login-config.xml-このファイルには、JAASベースのセキュリティを使用するときに使用される認証設定が含まれています
- JAAS -Java認証および承認サービス
- props / * -ディレクトリにはJMXコンソールのユーザーとロールが含まれます
- standardjboss.xml-標準のJBoss EJB設定が含まれています
- standardjbosscmp-jdbc.xml-このファイルは、JBoss CMPエンジン(コンテナ管理の永続性)のデフォルト設定ファイルです
- xmdesc / -mbean.xml * -ディレクトリには、JBoss-service.xmlファイルで指定された一部のサービスのXMBean記述子が含まれます。
deployディレクトリの内容
- jbossjca-service.xml -JCA仕様のアプリケーションサーバーの実装です。 JBossサーバー上のリソースアダプター用の通信管理統合ツールを提供します。
- JCA(Java EE Connector Architecture) -エンタープライズアプリケーション統合ソリューション(EAI)の一部としてサーバーアプリケーションとエンタープライズ情報システム(EIS)を接続するためのソリューション
- properties-service.xml -JavaBeansのPropertyEditorsとそのプロパティを設定できます。
- EJB3サービスの構成は 、ejb3-interceptors-aop.xmlおよびejb3.deployerファイルを編集することにより行われます
- ejb3-entity-cache-service.xml EJB3エンティティBeanのクラスターキャッシュを構成します( クラスタリングを参照)。
JBOSSローンチ
JBossをアプリケーションとして実行する
実行するには、必要なパラメーターを指定してバッチファイルを実行する必要があります。
run.bat usage: run.bat [options] options: -h, --help Show this help message -V, --version Show version information -- Stop processing options -D<name>[=<value>] Set a system property -d, --bootdir=<dir> Set the boot patch directory; Must be absolute or url -p, --patchdir=<dir> Set the patch directory; Must be absolute or url -n, --netboot=<url> Boot from net with the given url as base -c, --configuration=<name> Set the server configuration name -B, --bootlib=<filename> Add an extra library to the front bootclasspath -L, --library=<filename> Add an extra library to the loaders classpath -C, --classpath=<url> Add an extra url to the loaders classpath -P, --properties=<url> Load system properties from the given url -b, --host=<host or ip> Bind address for all JBoss services -g, --partition=<name> HA Partition name (default=DefaultDomain) -u, --udp=<ip> UDP multicast address -l, --log=<log4j|jdk> Specify the logger plugin type
停止するには、必要なパラメーターを指定してシャットダウンバッチファイルを実行する必要があります。
usage: shutdown [options] <operation> options: -h, --help Show this help message (default) -D<name>[=<value>] Set a system property -- Stop processing options -s, --server=<url> Specify the JNDI URL of the remote server -n, --serverName=<url> Specify the JMX name of the ServerImpl -a, --adapter=<name> Specify JNDI name of the MBeanServerConnection to use -u, --user=<name> Specify the username for authentication -p, --password=<name> Specify the password for authentication operations: -S, --shutdown Shutdown the server -e, --exit=<code> Force the VM to exit with a status code -H, --halt=<code> Force the VM to halt with a status code
WindowsでJBossをサービスとして実行する
このために、
Tanuki javaサービスラッパーを使用でき
ます 。
この場合、次の例があります。wrapper.exe -i .. \ etc \ conf \ wrapper.conf
Usage: wrapper <command> <configuration file> [configuration properties] [...] wrapper <configuration file> [configuration properties] [...] (<command> implicitly '-c') wrapper <command> (<configuration file> implicitly 'wrapper.conf') wrapper (<command> implicitly '-c' and <configuration file> 'wrapper.conf') where <command> can be one of: -c --console run as a Console application -t --start starT an NT service -a --pause pAuse a started NT service -e --resume rEsume a paused NT service -p --stop stoP a running NT service -i --install Install as an NT service -it --installstart Install and sTart as an NT service -r --remove Uninstall/Remove as an NT service -l=<code> --controlcode=<code> send a user controL Code to a running NT service -d --dump request a thread Dump -q --query Query the current status of the service -qs --querysilent Silently Query the current status of the service -v --version print the wrapper's version information. -? --help print this help message
一般的に、
tanuki javaサービスラッパーはかなり有用なユーティリティであり、将来は別の記事に値する可能性があります。
JBossを実行してサービスとアプリケーションを起動する
./server/ <インスタンス名> / deployアプリケーションファイルをこのフォルダーに削除または移動すると、すぐに展開され、結果がログファイルに表示されます。
例:
ear-deployer.xmlファイルを削除します
... INFO [TomcatDeployer] undeploy, ctxPath=/mbg, warUrl=.../tmp/deploy/tmp5055106795108270921mbg-2.10.1.41.ear-contents/mbg-console-exp.war/ INFO [TomcatDeployer] undeploy, ctxPath=/webstarter, warUrl=.../tmp/deploy/tmp5055106795108270921mbg-2.10.1.41.ear-contents/mbg-webstarter-exp.war/ ....
deployディレクトリにmail-service.xmlファイルを配置します
... INFO [org.jboss.mail.MailService] Mail Service bound to java:/Mail DEBUG [org.jboss.mail.MailService] Started jboss:service=Mail ...
セキュリティ設定
JBossサービスへのユーザーのアクセスをブロックするには、ファイル内のパラメーターのコメントを解除する必要があります(たとえば、jmx-consoleへのアクセスをブロックするため)。
deploy / jmx-console.war / WEB-INF / jboss-web.xml
deploy / jmx-console.war / WEB-INF / web.xml
ユーザー名とパスワードはファイルから取得されます。
conf / login-config.xml
ファイルのパラメーターを使用します:
conf /小道具
jmx-console-roles.properties
jmx-console-users.propertie
ポート設定
JBossサーバーに作業に使用するポートを指示することができます。
これを行うには、ファイル内の値を必要なポート番号に変更します。
port-bindings.xml (このファイルがconf / jboss-service.xml設定で指定され、ServiceBindingManagerが指定されている場合)
\サーバー[サーバー名] \ conf \ jboss-service.xmlWebコンソールから現在使用されているポートを表示できます。
RMIを構成する
RMI(Remote Method Invocation)-Java言語でリモートメソッドを呼び出すためのプログラミングインターフェイス。
RMIの観点では、リモートメソッドを呼び出すオブジェクトはクライアントオブジェクトと呼ばれ、リモートオブジェクトはサーバーオブジェクトと呼ばれます。
コンピューターは、特定の呼び出しに対してのみクライアントおよびサーバーとして機能します。 次の操作中に、これらのコンピューターが役割を切り替える可能性があります。つまり、別のコンピューター上のオブジェクトにアクセスするときに、前の呼び出しのサーバー自体がクライアントになる可能性があります。
クライアントがオブジェクトへのリモートリンクを取得するために使用できるURL。 このリンクは、リモートオブジェクトメソッドを呼び出すために使用されます。 通常、URLは次の形式を取ります
rmi://ホスト:ポート/ RemoteObjectName
ホストは、リモートオブジェクトのレジストリサーバー(rmiregistry)を実行するコンピューターの名前です(リモートオブジェクトが実行されているコンピューターでもあります)。
portは、ホストコンピューターでレジストリサーバーが実行されているポート番号です。RemoteObject Nameは、レジストリでリモートオブジェクトを見つけようとするときにクライアントが提供する名前です。
jbossでRMIポートを再定義するには、ファイルのRmiPortおよびRMIObjectPortパラメーターを変更する必要があります
\サーバー[サーバー名] \ conf \ jboss-service.xml
データベースに接続するための設定
データソースは、サフィックス-ds.xmlが付いたファイルで構成されます
JBossクラスター設定を使用する場合、これらのファイルはjboss / server / default / deployまたはjboss / server / default / farmディレクトリにあります
データベースに接続するための設定ファイルの例は、ドキュメントで見ることができます:jboss / docs / example / jca
クラスタリング
JBossでクラスターを整理する最も簡単な方法は、-c allオプションを使用してローカルネットワークで複数のサーバーインスタンスを起動することです
ノード間の通信は、JGroups通信ライブラリを使用して実行されます。JGroups通信ライブラリは、クラスター内にあるノードを追跡する主要な機能と、クラスターメンバー間の信頼できるメッセージングを提供します。
クラスターの他のメンバーと一致する構成と名前でチャネルを開始および停止することにより、いつでもクラスターにノードを動的に追加または削除できます。
デフォルトでは、4.2.x A.S.は4つの異なるチャネルを作成します。
- Webサービスセッションのコピー、
- EJB3コピーSFSBサービス、
- EJB3キャッシングサービス
- HAPartitionとして知られるサービスクラスタリングサービスの汎用カーネル
負荷分散ポリシー
クライアント側のバランス
クライアント側のバランスの種類:
- ラウンドロビン -各リクエストは新しいノードに送信され、ノードのリストを順番に通過します。 最初のノードはリストからランダムに選択されます。
- ランダムロビン -要求ごとに、ターゲットノードがリストからランダムに選択されます。
- First Available-使用可能なノードの1つがメインターゲットとしてランダムに選択され、各コールに使用されます。 ターゲットノードのリストが変更されると(ノードが起動または停止したため)、新しいターゲットノードが選択されます。 各クライアントは、他のクライアントとは独立して独自のターゲットノードを選択します。
- 最初に利用可能な同一のすべてのプロキシ -「最初に利用可能」と同じ動作をしますが、ターゲットノードの選択はすべてのクライアントに共通です。 したがって、2つのクライアントが同じターゲットサービス(EJBなど)を使用する場合、各クライアントは同じターゲットを使用します。
クラスターへのアプリケーションのデプロイ
アプリケーションをクラスターにデプロイするには、それをフォルダーにコピーする必要があります。
<サーバー名> / farm /
その後、アプリケーションはクラスター内の他のノードに自動的にデプロイされます。
アプリケーションを削除するには、クラスターノードの1つにあるフォルダー<server_name> / farm /から削除するだけで、他のノードからも削除されます。
ファーム展開構成(複数展開)は、deploy / deploy.lastディレクトリにあるfarm-service.xmlファイルから利用できます。
構成にファーム展開サポートを含める必要がある場合は、farm-service.xmlファイルを構成とともにディレクトリにコピーする必要があります。次に例を示します。
$ JBOSS_HOME / server / your_own_config / deploy / deploy.last
Cluster-service.xmlの構成
クラスターモードのJBossサービス設定は、/ deployディレクトリのcluster-service.xmlファイルにあります
- オプション属性名 -クラスター内の接続に使用されるHAPartitionサービスの必須属性
- URL-アプリケーションを配置して、クラスタにデプロイするディレクトリを示します。 次のように指定する必要があります:farm /、つまり 完全なURLは次のようになります:$ JBOSS_HOME / server / all / farm
- ScanPeriod-フォルダーの変更を確認する間隔
- ポートは、HA-JNDIサーバーがJNPクライアントを待機しているアドレスを示すオプションの属性です。 デフォルト値は1100です
- バックログは、JNPクライアントの待機中にTCPサーバーソケットによって使用される待機を示すオプションの属性です。 デフォルト値は50です。
- RmiPort-サーバーがスタブとの通信に使用するポートを決定します。 この属性はオプションです。 デフォルト値は1101です。設定しない場合、サーバーは自動的にRMIポートを割り当てます。
- AutoDiscoveryAddress-オプションの属性。自動JNDIディスカバリーをリッスンするマルチキャストアドレスを指定します。 デフォルト値はシステムプロパティjboss.partition.udpGroup、または設定されていない場合は230.0.0.4です。
- LoadBalancePolicy-ロードバランサーのタイプを示します
- 設定(ポートアドレスなど)を構成することにより、cluster-service.xmlファイルで指定された一部のサービスの複数のコピーを開始することができます。 これは、サーバーが複数の異なるクラスターのノードである場合に必要です。
JBossバージョン4.2.3の既知のクラスタリングの問題
- all / farm /フォルダーにアーカイブを配置し、既に実行中のクラスターにサーバーを接続すると、このアプリケーションはデプロイされません。 JBossは、これが新しいデプロイメントアプリケーションであるか、このサーバーが利用できない間にクラスター内の他のノードから削除された古いアプリケーションであるかを知りません。
- デプロイメント用のアプリケーションをクラスター構成のフォルダーとして配置することはできません。 クラスタ内の他のノードに正しく展開されません。
- アプリケーションのデプロイと最小化は、アトミックな操作ではありません。 つまり アプリケーションがクラスタノードの1つにデプロイされていない場合、他のクラスタノードへのこのアプリケーションのデプロイは妨げられません。 ロールバックできません。 クラスターのすべてのノードでアプリケーションの展開順序を制御することはできません。 すべてのノードに同時に展開できるため、顧客はサービスを一時的に利用できなくなります。
PS修正、コメント、追加、コメントは大歓迎です。