0

例外が発生したときにさまざまな詳細を記述できるように、Web アプリケーションにその環境に関することを学習させたいと考えています。

Glassfish が Web アプリケーション内で実行されている IP アドレスを取得するにはどうすればよいですか?

構成、JDBC 接続、JMS、JNDI などのスナップショットも取りたいのですが、可能ですか?

これは、glassfish の API と Bean または mbean の注入に関連していると思います。

ウォルター

4

3 に答える 3

0

Glassfish が Web アプリケーション内で実行されている IP アドレスを取得するにはどうすればよいですか?

そのために使用しますServletRequest#getLocalPort()(これは、リクエストが送信されたポート番号をServletRequest#getServerPort()実際に返すものではなく、ほとんどの場合、ルーティング/負荷分散のためにコンテナーがリッスンしているポートとは異なる場合があります)。80

構成、JDBC 接続、JMS、JNDI などのスナップショットも取りたいのですが、可能ですか?

JNDI ツリーを参照してそこにあるものを確認することはできますが、アプリケーションはすべての詳細を認識する必要はありません (理解してください: すべてのメタデータにアクセスできるとは思いません。少なくともこれはそうではありません)。仕方)。

もう 1 つのオプションは、GlassFish の公開された管理 MBean に JMX 経由で接続することです。ただし、これには管理者の資格情報が必要です (そのため、不可能な場合があります)。

より正確な回答を得るには、ニーズと制約を明確にする必要があるかもしれません。

于 2010-02-06T16:21:58.330 に答える
0

Glassfish が Web アプリケーション内で実行されている IP アドレスを取得するにはどうすればよいですか?

このような情報はServletRequestポートなどで取得できます。

構成、JDBC 接続、JMS、JNDI などのスナップショットも取りたいのですが、可能ですか?

接続または接続ファクトリのメタデータに依存する必要があります。これは完全に移植可能ではありませんが、 JDBC メタデータなどの情報を取得できるはずです。

Glassfish の JMX Bean を接続することもできます。時間の経過とともに割り当てられた接続を監視するために、Web アプリから 1 回実行しました。検索する JMX Bean の名前がわかっている場合 (たとえば、データ ソースの名前がわかっている場合) は、そこから情報を得ることができます。基本的に、Glassfish のネイティブ コンソールに表示されるものはすべてそこにあります。

起動時に aServletContextListenerを使用してすべての情報を収集し、それらをどこかに保存して、例外が発生した場合にそれらを吐き出すことができます。

潜在的な機密情報をエンド ユーザーに開示する可能性があることに注意してください。これは推奨される方法ではありません。

于 2010-02-05T14:49:36.867 に答える
0

私は次のことを行います:

  1. マシン上のすべてのネットワーク インターフェイスを見つける
  2. JVM 情報を記録する

これにより、問題の原因を特定するのに十分な情報が得られます。

ウォルター

于 2010-03-31T16:06:18.737 に答える