問題タブ [mbeanexporter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - カスタム Spring MBeanExporter で @Managed... アノテーションを候補クラスで使用する方法
事前に作成されたオブジェクトのコレクションを受け取り、それらの MBean を作成するカスタム Spring MBeanExporter を作成しました。関連するクラスの既存のプロパティと操作を取得するだけで、属性と操作を決定するために「デフォルト」戦略を使用しているようです。
「afterPropertiesSet()」メソッドがあり、何らかの作業を行い、基本の「Bean」リストにデータを入力してから、そのスーパークラス メソッドを呼び出します。これはかなりうまく機能します。
関連するクラスで「@Managed...」アノテーションを利用できるかどうかを確認したいと思います。私の最初の試みでは、「Beans」リストの作成方法と処理方法を変更せずに、関連するクラスに予想される注釈を付けただけです。残念ながら、これはうまくいきませんでした。クラス、属性、および操作にいくつかの「説明」属性を追加しましたが、これらは VisualVM に表示されませんでした。
関連するクラスで MBeanExporter メカニズムに @Managed... アノテーションを使用させるためにできることはありますか?
私の現在のクラスは MBeanExporter を拡張していることに注意してください。AnnotationMBeanExporter を拡張するように変更すると、@Managed... アノテーションを持たないクラスで失敗します。クラスで @Managed... アノテーションが見つからない限り、「MBeanExporter」が行うことをデフォルトにするものが必要です。
コードを表示する必要があると思いますが、これはほとんど単なる疑似コードになります。
私の MBeanExporter は次のようになります。
リストに入れられる Bean の 1 つには、次のようなクラスがあります。
これが VisualVM でレンダリングされるとき、@Managed... アノテーションに記述されているメタデータは使用されません。結果として得られる ObjectName は、「@ManagedResource」アノテーションで指定したオーバーライド値ではないため、これは確実にわかります。
代わりに基本クラスを「AnnotationMBeanExporter」に変更すると、このクラスに関連付けられた Bean は、注釈で指定したメタデータを取得します。ただし、「@ManagedResource」アノテーションを持たないクラスに関連付けられている他のすべての Bean はすべて、次のような例外で失敗します。
私の一時的な回避策は、単純な MBeanExporter サブクラスを定義して、コンストラクター フラグに応じてプレーンな MBeanExporter または AnnotationMBeanExporter として動作できるようにすることです。次に、2 つのインスタンスを簡単に定義できます。1 つはフラグ付き、もう 1 つはフラグなしで、処理するパスのセットが異なります。これは機能します。
次に試みることは、MBeanExporter と AnnotationMBeanExporter を内部で管理する単一の「偽の」MBeanExporter を用意することです。最初の Bean リストを作成しますが、Bean に関連付けられたクラスを調べて @ManagedResource アノテーションが存在するかどうかを確認しながら、それぞれを処理します。これは、AnnotationMBeanExporter または通常の Bean によって処理される Bean のリストに最終的に含まれるかどうかを示します。
更新: 生の AnnotationMBeanExporter を作成して「afterPropertiesSet()」を呼び出すことができないため、この戦略で問題が発生しました。次のエラーで失敗します。
xml - MBeanExporter マップの値のオーバーライド
親 xml と、MBeanExporter のコンテキストで親の Bean をインポートする子 xml の両方で定義されたキーのマップ値をオーバーライドしようとしています。Bean の「parent」属性、「registrationBehaviorName」プロパティ、およびマップ自体の「merge」属性を使用して、いくつかの組み合わせを試しました (すべて以下のコードに存在します)。
親 XML
子 XML
親の場合はキー「theKey」の値「parentValue」を取得し、子の場合はキー「theKey」の値「childvalue」を取得しようとしています。現在、インターネットから収集された属性/プロパティの使用された組み合わせに応じて、2 つの異なる間違いが発生します...
またはBeanAlreadyExistsException
。親子が私がやろうとしていることを達成するための最良の方法ではないことは承知していますが、この構造を変更できないより大きなコンテキストで作業しています (コードに含めなかった他の多くの Bean が現在)。
私がやろうとしていることは実際に可能ですか? 私は Spring の専門家ではなく、ドキュメントやその他のソースで有効な解決策を見つけることができませんでした。
spring - Spring JMX プロキシ インターフェイスの問題
プロジェクトで Spring + JMX Bean 構成を試しています。私はJMXテクノロジーに不慣れです。マネージド Bean でプロキシ インターフェイスの方法を実装する必要があります。試してみると、以下のエラーが表示されます。
誰でも私を案内できますか?私は自分の戦争をTomcatに展開しようとしています。起動時のアプリケーションのコンテキスト初期化で、InvalidInvocationExceptionが発生します
インターフェース
実装クラス
AppLoader で使用
service.xml スニペット
フル スタック トレース
init() に Try-Catch を追加し、スタック トレースを出力します (以下を参照)。
OperationException() の結果は getLocation() になります
編集:私はまだ問題に直面しています。https://github.com/appu-86/JMX-Testにサンプル プロジェクトを作成しました。サンプル プロジェクトでプロキシ インターフェイスの問題が発生する理由を教えてもらえますか?
spring - JMX 属性へのアクセスを制限する方法
私たちのアプリケーションには、特定の MBean の JMX 属性と操作のサブセットへのユーザー アクセスを制限する必要があります。たとえば、C3P0 MBean は多くの属性/操作を公開します。ユーザーに最小プール サイズを変更させたくない場合を考えてみましょう。したがって、JMX コンソールでその属性のセッターを抑制したいと考えています。
Spring doc を見て、それが可能だと思いました: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jmx.html
以下は、Hibernate MBean を使用した私の試みです。
JMX コンソールで Hibernate MBean に対して clear メソッドのみが表示されることを期待していました。ただし、上記の構成では、元の Hibernate MBean メソッドがすべて公開されています。
次に、C3P0 Mbean はデフォルトで公開されており、それを公開するために Spring Bean は必要ありません。その MBean は、「PooledDataSource[2spw3u98bqgqeg1697gnx|73302995]」としてコンソールに表示されます。その MBean の属性と操作のサブセットのみを公開する正しい方法が何であるかはわかりません。
あなたの助け/ポインタは大歓迎です。ありがとう。
java - 非シングルトン (プロトタイプ) Spring Bean JMX 監視可能
私はSpring JMXの初心者です。そして、Spring JMX を介してプロジェクトのプロトタイプ Bean を監視したいので、動作している Spring の MbeanExporter に Bean (Singleton) を登録するサンプル プロジェクトを作成しました。次に、Google で Non-Singleton Bean を Spring JMX に登録して監視しましたが、役立つものは何も見つかりませんでした。
私の問題を説明するSpringフォーラムの投稿に出くわしましたが、その答えは的を射ていません。
java - プログラムで JMX を介して MBeanServer を公開しようとすると、奇妙な RMI エラーが発生する
Java 管理に関するドキュメントの「JMX リモート API を使用してすぐに使用できる管理を模倣する」という見出しのセクション(ページの下部を参照) では、JMX を介して MBeanServer を手動で公開する方法が示されています。このようなもの:
このコードを実行しようとすると、この例外が繰り返しスローされます (サーバーにリモート接続することはできません)。
「関連するソケットファクトリでレジストリが作成されていないに違いない」と思ったので、 への関連する引数のコメントを外しましたLocateRegistry.createRegistry
。しかし、今ではこの例外がスローされます (そして、アプリケーションは起動に失敗します)
注: アプリケーションはjavax.net.ssl
、チュートリアルで説明されているように、関連するシステム プロパティ セットを使用して実行されます。誰が何が起こっているのか知っていますか?