3つめのメリット

JMXを利用するメリットの3つめは、コンポーネント間の結合を疎にすることです。MBean同士はお互いのリファレンスを直接内部に持つことはありません。MBean間でサービスを利用する場合は、必ずJMXサーバ(JBossカーネル)を経由してオペレーションを呼び出すことになります。JBossカーネルに対してサービスの特定を行う場合であっても、クラス名を直接指定するのではなく、MBean名称を利用します。呼び出し手順は次のようなイメージになります。


  1. JBossカーネルオブジェクトを取得する
  2. JBossカーネルに対して利用するサービスをMBean名+属性(あるいは操作)名で指定する
  3. JBossカーネルは指定された名前に対応する実コンポーネント(クラス)を検索し、処理を実行する
  4. 実行結果を呼び出し元に対して返答する

このように、必ずサービスを利用する場合はJBossカーネルを経由しますので、 MBeanとして作成されたサービスの内部実装が変わったとしても、インターフェース部分が変わらないのであれば、サービスを利用する側(クライアント)の変更は必要ありません。この辺りの考え方はインターフェースを前提にプログラミングをするEJBの考えとよく似ています。

このしくみを利用することで、JBossはサービス実装の切り替えが容易に行えるようになっています。JBossには切り替え可能なコンポーネントモジュールが多数存在しますが、JBossカーネルに登録するコンポーネントを指定する設定を編集するだけで機能の差し替えが可能です。当然独自に実装し たサービスと置き換えたり、JBossが標準で用意していない機能を新規サービスとして追加することも同様な手順で簡単に行えます。

JBossとTomcat

JBossはWebコンテナとしてTomcatを標準で組み込んでいます。Tomcatの機能自体は単体でリリースされているものとほぼ同じです。ただ、Tomcat全体がMBeanとしてラッピングされています。JBoss カーネルからみると、TomcatはWebコンテナとして振る舞うひとつのサービスとなります。

先ほどJMXコンソールの説明で参照した「Catalina:type=Server」は、TomcatをラッピングしているMBeanの情報を参照したことになります。単体のTomcatはそれ自身がひとつのJava VM上で動作しますが、MBeanとしてJBoss内部に組み込まれている状態では、JBossカーネルやその他のサービスと同じJava VM上で動作します。そのため、Web層からEJBにアクセスしたりする場合であっても、ローカルリファレンスを利用することができますので、データのシリアライゼーションなどの余分なオーバヘッドが無く、効率よく処理されます。

Tomcat単体の場合、静的ページやWARファイルを配置する場所はTomcatをインストールしたディレクトリ以下の「webapps」ディレクトリなどになりますが、JBossと統合されたことにより、このようなディレクトリはなくなっています。

WARファイルをデプロイする場合は、前回の説明にあったように「$JBOSS_HOME\server\default\deploy」(デフォ ルトの設定を使う場合)に配置することになります。しかし、このディレクトリにはWARファイルの中に含まれていない静的なHTMLファイルや画像ファイルだけを配置することができません。そういったファイルを配置したい場合は「deploy」ディレクトリ以下の「jbossweb- tomcat50.sar\ROOT.war」に配置してください。

Tomcatで設定可能な事項は、基本的にJBossに内蔵されているTomcatでも設定できます。Tomcatの設定に関する詳細は省略しますが、設定は以下のファイルに対して行えばほとんどの場合可能です。



$JBOSS_HOME\server\default\deploy\jbossweb-tomcat50.sar以下の次のファイル
server.xml
conf\web.xml
META-INF\jboss-service.xml

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30