問題タブ [load-time-weaving]

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.

0 投票する
6 に答える
7087 参照

spring - jetty-maven-plugin と loadTimeWeaver

私のSpring WebAppをjetty-mavenプラグインで動作させることができないようです

私はいつも得る

私は持っていますが:

  • MAVEN_OPTS を javaagent:/Users/blabla/.m2/repository/org/springframework/spring-instrument/3.1.3.RELEASE/spring-instrument-3.1.3.RELEASE.jar に設定します
  • JAVA_OPTIONS を同じものに設定します
  • spring-instrumentspring-aspectsに dep を追加
  • jetty-maven-plugin 構成jvmArgsに 追加-javaagent:....
0 投票する
1 に答える
4457 参照

java - Spring Maven プロジェクト BeanCreationException

Spring ソース 3.1.0 にアップグレードしましたが、なぜ私のプロジェクトが

ビルド パスにサーバー ランタイム ライブラリを追加したことを確認しましたが、それでもBeancreationExceptions. スタック トレース:

主に RelectiveLoadTimeWeaver に問題があることを示しています。

サーバーの context.xml を更新して InstrumentalLoadtimeWeaver ローダーを追加することはできましたが、機能しなくなりました。

編集:完全なスタック トレース

0 投票する
2 に答える
521 参照

maven - アスペクトが原因で Junit が失敗する

アノテーションに基づくカスタム セキュリティ フレームワークがあります。メソッドのセキュリティ アノテーションに遭遇したときに、aspectj maven プラグインを使用してアスペクトを織ります。

jenkins を使用してプロジェクトをビルドし、aspectj maven プラグインの目標を以下のようにコンパイル用に設定します。

問題は、junit の実行時に発生します。メソッドにセキュリティ関連の注釈が既に織り込まれているため、単体テストは失敗します。

junits を機能させてから、aspectj 織りを行う方法はありますか? .aj ファイルを個別に使用しているため、読み込み時間の織り方をどのように設定できるかわかりません。

これに関するヘルプをいただければ幸いです。

よろしく

0 投票する
2 に答える
4184 参照

java - OSGiWeavingHookの例

OSGi 4.3+ウィービングフックサービスの使用例はありますか?AspectJ、ASM、JavaAssistはどうですか?誰かが実際にOSGiWeavingHooksを使用していますか?

OSGi Core 5.0.0セクション56.2の例では、実際の織り方を省略し、「最終的な織り方は読者の練習問題として残しています」と述べています。

私の目標は次のとおりです。

  1. フィールド(プリミティブまたはオブジェクト)に配置できるアノテーション(@MyAnnotation)を作成します。
  2. org.osgi.framework.hooks.weaving.WeavingHookを作成して、そのアノテーションを使用してクラスを織ります
  3. ロードタイムウィービングを使用して、そのアノテーションを持つフィールドの変更をポイントカットします
  4. フィールドが変更されたEventAdminイベントを発生させます。
  5. バンドルの配線をWeavingHookからEventAdminバンドルに動的に更新します。

私の問題は主に#3にあります。

現在、AspectJ WeavingAdaptorを使用してウィービングを実行しようとしていますが、コンストラクター内のjava.net.URL []アスペクトURLがjarまたはディレクトリであると想定しているため、アスペクトライブラリを取り込む際に問題が発生します。バンドルではなく、ファイルシステムで見つけることができます。また、 GeneratedClassHandlerのacceptClass(String name、bytes [])メソッドへのコールバックを介してウィーバーによって生成された新しいクラスを処理する方法がわかりません。

たぶんWeavingAdaptorは私の織りを始めるのに適切な場所ではありませんか?それとも、AspectJを使うべきではないのでしょうか?

MyAnnotation.java

MyWeavingHook.java

MyAspect.aj

MyTestClass.java

Spring AOPを使用することもできますが、SpringまたはBlueprintを介してインスタンス化されたBeanだけでなく、すべてのバンドルでこれを機能させたいと考えています。また、Equinox WeavingはまだOSGiウィービングフック仕様を使用していないようで、Equinoxに縛られたくありません。他の何かがうまく機能すれば、私はAspectJを廃棄することに問題はありません。

同様の質問への参照:OSGiを使用しているときにバイトコード操作を行うことは可能ですか?

アップデート:

最終結果は、Equinox Aspectsを使用して、それをKarafにインストールしたところです。3つのバンドル、1つのライブラリ、およびシステムプロパティでした。OSGiウィービングに更新されるか、Equinox Aspectsと同様のAspectJコードを使用するために独自のOSGiウィービングフックを作成するまで、これを使用します。Equinox Aspectsを機能させるために必要なウィービングインジケーターは、ウィービングするバンドルのAspectJRTにrequire-bundle/reexportまたはimport-packageを導入するため、好きではありません。この依存関係は、バンドルの外部で動的に追加および通知する必要があります。

0 投票する
1 に答える
388 参照

aspectj - コンパイルされたクラス ファイルの Inter 型宣言

Load Time Weaving でコンパイルされたクラス ファイルで AspectJ を使用して Inter Type Declarations を行うことは可能ですか?

例: Groovy コードをコンパイルし、IDT を使用してフィールドまたはメソッドを追加したいと考えています。

0 投票する
0 に答える
93 参照

java - JRockit の Weaving/AOP API に相当する OpenJDK はありますか?

JRockit のビルトインのウィービング/AOP サポートにはかなり感銘を受けました。OpenJDK での AOP ウィービングの同様に使いやすいサポートはありますか?

私が計測しようとしているコードは、Maven を介して読み込まれることが多いため、クラスローダーにフックして、たとえばウィービング クラスローダーをインストールするのは難しい場合があります。JMTI ベースのソリューションは、実用的である場合とそうでない場合があります。

0 投票する
1 に答える
751 参照

tomcat - 単一の JVM にデプロイされたすべてのアプリケーションの AspectJ LTW

私は、aspectJ アスペクトを単一の War (aspectsWar.war) ファイルにバンドルし、それを既存の実行中のアプリケーションを含むアプリケーション サーバーにデプロイし、Tomcat サーバー上の javaagent で LTW ウィービングを使用しました。

私は、同じ jvm で実行されている他のアプリケーションではなく、aspectsWar.war で呼び出しをインターセプトしているアスペクトを確認できます。

おそらくアプリサーバーへのカスタムクラスロードの変更を通じて、実行中の他のすべてのアプリケーションを(できれば個々のwarファイルを変更することなく)認識して織り込む私のアスペクトアスペクトを持つ方法はありますか...

注: これは、Spring 関連の統合なしで、aspectJ を単独で使用しています。

ご意見をお聞かせください。

0 投票する
0 に答える
633 参照

spring - Spring Tomcat6 "No LoadTimeWeaver available" コードで構成された webapp コンテキストでのエラー

Tomcat 6 サーバーにデプロイする Spring 3.2.1 ベースの webapp (RestFull Services) を開発しています。Jpa、トランザクション、および他のカスタム依存関係プロジェクトの機能のため、loadTime ウィービングを有効にする必要があります。これを行うには、最初に app /META-INF で context.xml を構成し、以下を追加します。

次に、spring-instrument-3.2.1.RELEASE.jarspring-instrument-tomcat-3.2.1.RELEASE.jarを tomcat/lib フォルダーに配置します。

そして、ユーザーannotationBasedConfigurationにweb.xmlを構成しました

Webapp は XML を使用しないコード構成を使用するため、次のような @Configuration 注釈クラスを作成しました。

アプリケーションを起動しようとすると、エラーが表示されます

そのため、最初は LoadTimeWeaving が適切に構成されていないように見えましたが、考えられる回避策を 1 日試しても解決策が見つかりませんでした。

私が見ることができる唯一の奇妙なことは、ログの次の行です。

同じ名前 (「LoadTimeWeaver」??) を持つ 2 つの異なる Bean が異なる定義でアプリ コンテキストで作成され、これら 2 つの Bean が何らかのレベルで競合しているように思えます。

ウィーバーが context:load-time-weaver (インポートされた jar からロードされたコンテキスト ファイルに存在する) を使用して作成し、新しいコンテキストで @EnableLoadTimeWeaving を使用して作成されたものが何らかの形で衝突している可能性はありますか? 最後の 1 つだけを使用して 2 つのうちの 1 つをオーバーライドする方法はありますか?