問題タブ [javaagents]
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 - javaagentsに関するチュートリアル
javaagentsについて知りたいのですが、調査は簡単ではありません。結果のほとんどはを参照していJADE
ます。私はJavaエージェントが2つのことを意味することができることを知っています:
- 分散システムのエージェント概念の化身であるJavaでプログラムされたエージェント。
- プロファイラー、コードカバレッジツールなど、JVMの動作を強化するための低レベルのソフトウェアコンポーネント
ここで同様の質問を見つけましたが、残念ながらバージョン1も参照しています。
バージョン2のjavaagentに関する記事、初心者向けのチュートリアル、サンプルプロジェクトを知っていますか?ここで見つけましたが、もっと探しています。
java - javaagents: 変換順序
私のプロジェクトでは、バイトコードを 2 段階で変換したいと考えています。順番が重要です。
- まず、メソッド定義を変更する必要があります
- 次に、メソッドが呼び出される方法
例えば
- 定義を から
String hello()
に変更String hello(String s)
- 通話を から
Hello.hello()
に変更Hello.hello("newArgument")
最初のステップを実行するトランスを追加することができました。
私の質問は: その方法で新しいトランスを追加できますか:
MyClassFileTransformer
そして、前に彼の仕事をすることを確認してくださいMyClassFileTransformer2
?
java - Javaエージェントの作成とNotesAPIの呼び出し-LoutsNotes
LotusDominosメールボックスからの電子メールを読み取るタスクがあります。同じことを実行するために、次の2つのオプションがあります(他のオプションもある可能性があります)。
- メールボックス内にJavaエージェントを作成し、スケジュールします。メールを処理してアクションを実行します。\
- 使用済みのNotesAPIを使用して個別のJavaコードを記述し、ドミノサーバーを呼び出してメールをフェッチして処理します。
両方の違いは何ですか?機能か何か他のもの?
java - jdk6-のjvmti-リファレンスとチュートリアル
jvmtiエージェントの作成を学ぶための良い出発点を知っている人はいますか。
このための本やオンラインチュートリアルを探しています。
http://docs.oracle.com/javase/6/docs/platform/jvmti/jvmti.htmlを見ました
しかし、それはハウツーの明確な概要を提供していないようです。
任意の参照をいただければ幸いです。
java - Tomcat アプリケーションの classmexer を実行していますか?
classmexer-0.3.jar を tomcat で使用して、Web アプリケーションのオブジェクト サイズを取得しようとしています。ただし、メソッドが呼び出されると、次のエラー メッセージが表示されます。
これを修正するにはどうすればよいですか? クラス TransactionManager の jar が必要だと思いますが、どれかわかりません。
私のプロジェクトは、開発用にEclipseでMavenを使用して構築され、Jenkinsを使用してUNIXサーバーから実行されます。
乾杯、
アレクセイ・ブルー。
編集:セットアップが正しいことを示唆する、より基本的なオブジェクトに対して現在機能しているようです。obj に Google LoadingCache が含まれている MemoryUtil.deepMemoryUsageOf(Obj) を呼び出すときに問題が発生したと思います。そのためのソースが不足しているようですが、そのソースについてのアイデアはありますか?
java - Javaagent が「redefineClasses はこの環境ではサポートされていません」と報告する
私はJavaエージェントの初心者です。シンプルな HotswapAgent クラスを作成しました (Play! フレームワークからスニッフィング):
このマニフェストで:
そして、この方法で新しいクラス定義をリロードしようとします:
このすべてのクラスは jar にあり、最終的にこのエラーが発生します (reload() 呼び出しで):
しかし、マニフェストでは宣言されてCan-Redefine-Classes: true
います。
JVM は標準の MacOS X Java 1.6 VM です。この JVM は、同じエージェント メカニズムを使用する JRebel とうまく連携します。
どうしたの?
lotus-domino - Java エージェント生成ファイル リンク
ロータスでは、ネットワーク ドライブ上のファイルへの参照を送信する場合、ホットスポット リンクを手動で作成する必要があります。同じリンクを使用して、Java エージェントによってプログラムで電子メールを送信することは可能ですか?
( lotusscriptでは、この目的でmimeentityを使用できますが、よくわかりません。)
java - 非 null をチェックした後の null ポインター例外
null であってはならない変数に奇妙な java.lang.NullPointerException があります。
param1 はメソッド パラメーターとして指定され、null にすることができます。通常、param1 を params[0] に影響を与える場合、null ではありません (そうでない場合は if ステートメントを渡しません)。
エラーは次のとおりです (144 行目は「params[0] = param1;」です)。
例外が発生するメソッドの完全なコードを次に示します。
編集:
私の例を明確にするために、私は次のコンテキストにいます。
- ASM を使用して Java アプリケーションを計測する
- Java エージェントを使用しながら、インストルメント化された新しいクラスを実行する
- エージェントは、インストルメント化されたコードによって収集された情報を使用して、いくつかの測定を実行します
- エージェントは、アプリケーションのメソッドのパラメーターの値も収集します。
このため、メソッドの実行ごとに onMethodEntry が実行されます。私はこれらのメソッドのいくつかを異なる署名で持っています。特に:
これは、プログラム クラス (つまり、ハノイの塔) を計測するために使用したコードです。
java - 軸 API を使用する Lotus Notes 6.5 の JavaAgent で例外「org.apache.commons.logging.LogFactory の実装が定義されていません」が発生する
Web サービスにアクセスするには、Lotus Notes 6.5 DB に JavaAgent を記述する必要がありました。この目的のために、Axis Apache API を使用しました。Java エージェントを作成し、[プロジェクトの編集] ボタンを使用して、エージェントに軸の jar ファイルを追加しました。
以下はエージェントコードです。
以下は、スローされる例外です。
私はインターネット上のいくつかのリンクをたどってみましたが、それが何を求めているのかを正確に知ることができませんでした. 例: http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/40d033fba3897f4d85256cd30034026a?OpenDocument
どんな助けでも素晴らしいでしょう。私がやりたかったことは、w3schools の温度変換 Web サービスなどの Web サービスにアクセスできるようにエージェントを作成することだけでした。http://www.w3schools.com/webservices/tempconvert.asmx?op=FahrenheitToCelsius
java - Java Instrumentation Agent ライブラリのネイティブ メソッドを再変換する
メソッドのエントリ/終了を記録するために、アタッチ API を介して動的にロードされる Java エージェント ライブラリを作成して、いくつかのメソッド (特定のスレッドのスタック トレースに表示されるメソッド) を再変換しようとしています。次に、メソッドの入口/出口情報が custom を介してエクスポートされますMBean
。
私の現在の「プロトタイプ」は、インストルメント化されたメソッドがネイティブでない限り、これまでのところ機能します。
java.lang.instrument.Instrumentation#setNativeMethodPrefix()のドキュメントによると、Java エージェントはネイティブ メソッドを非ネイティブ スタブ メソッドに置き換え、名前にその接頭辞を持つ別のネイティブ メソッドを追加できるはずです。元のネイティブ メソッドのネイティブ コードにバインドされます。
ただし、これを実装すると、次のエラーが発生します。
新しいネイティブ メソッドを追加したので、これは正しいことです。
ネイティブ メソッドを非ネイティブ メソッドに置き換えるだけで機能しますが、元のネイティブ メソッドにコールバックを委譲することはできません。nativeMethodClassSuffix
ネイティブメソッドはクラス名とメソッド名で検索され、類似のものがないため、別のクラスでネイティブメソッドを定義しても機能しません。別の新しいクラスローダーで同じ名前の別のクラスを定義することはうまくいくでしょう。新しいクラスへの呼び出しを委譲する間接的な方法で可能かもしれないと思いますが、1 つのネイティブ ライブラリは、1 つのみのクラスによってロードされたネイティブ メソッドにのみリンクできます。クラスローダが含まれているため、ネイティブ メソッドが適切にリンクされません。
ここで私が見逃している明らかなものはありますか?私のコードは少し長すぎてここに投稿できません。問題を示す Java エージェントの小さなサンプルを作成して、ここにリンクすることが役立つと思われる場合は、こちらを参照してください。