例外が発生したときにさまざまな詳細を記述できるように、Web アプリケーションにその環境に関することを学習させたいと考えています。
Glassfish が Web アプリケーション内で実行されている IP アドレスを取得するにはどうすればよいですか?
構成、JDBC 接続、JMS、JNDI などのスナップショットも取りたいのですが、可能ですか?
これは、glassfish の API と Bean または mbean の注入に関連していると思います。
ウォルター
例外が発生したときにさまざまな詳細を記述できるように、Web アプリケーションにその環境に関することを学習させたいと考えています。
Glassfish が Web アプリケーション内で実行されている IP アドレスを取得するにはどうすればよいですか?
構成、JDBC 接続、JMS、JNDI などのスナップショットも取りたいのですが、可能ですか?
これは、glassfish の API と Bean または mbean の注入に関連していると思います。
ウォルター
Glassfish が Web アプリケーション内で実行されている IP アドレスを取得するにはどうすればよいですか?
そのために使用しますServletRequest#getLocalPort()
(これは、リクエストが送信されたポート番号をServletRequest#getServerPort()
実際に返すものではなく、ほとんどの場合、ルーティング/負荷分散のためにコンテナーがリッスンしているポートとは異なる場合があります)。80
構成、JDBC 接続、JMS、JNDI などのスナップショットも取りたいのですが、可能ですか?
JNDI ツリーを参照してそこにあるものを確認することはできますが、アプリケーションはすべての詳細を認識する必要はありません (理解してください: すべてのメタデータにアクセスできるとは思いません。少なくともこれはそうではありません)。仕方)。
もう 1 つのオプションは、GlassFish の公開された管理 MBean に JMX 経由で接続することです。ただし、これには管理者の資格情報が必要です (そのため、不可能な場合があります)。
より正確な回答を得るには、ニーズと制約を明確にする必要があるかもしれません。
Glassfish が Web アプリケーション内で実行されている IP アドレスを取得するにはどうすればよいですか?
このような情報はServletRequest
、ポートなどで取得できます。
構成、JDBC 接続、JMS、JNDI などのスナップショットも取りたいのですが、可能ですか?
接続または接続ファクトリのメタデータに依存する必要があります。これは完全に移植可能ではありませんが、 JDBC メタデータなどの情報を取得できるはずです。
Glassfish の JMX Bean を接続することもできます。時間の経過とともに割り当てられた接続を監視するために、Web アプリから 1 回実行しました。検索する JMX Bean の名前がわかっている場合 (たとえば、データ ソースの名前がわかっている場合) は、そこから情報を得ることができます。基本的に、Glassfish のネイティブ コンソールに表示されるものはすべてそこにあります。
起動時に aServletContextListener
を使用してすべての情報を収集し、それらをどこかに保存して、例外が発生した場合にそれらを吐き出すことができます。
潜在的な機密情報をエンド ユーザーに開示する可能性があることに注意してください。これは推奨される方法ではありません。
私は次のことを行います:
これにより、問題の原因を特定するのに十分な情報が得られます。
ウォルター