問題タブ [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 投票する
1 に答える
467 参照

java - 管理されていないインスタンスでクラスを自動配線する方法は?

サーバーの起動時に作成されるクラスがあります。クライアント アプリケーションのエントリ メソッドとして機能します。この振る舞いを変えることはできません。

@Autowiredこのアンマネージド クラス内でSpring を使用したいのですが。アスペクトウィービングが進むべき道かもしれないと読みました. ログに応じてすでに実行されているようです:

しかし、それでも私の注入されDaoたサービスはnull. 何が欠けている可能性がありますか?

ウィービングを有効にします (tomcat):

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

java - -javaagent vm オプションなしで Spring AspectJ ウィービングはどのように機能しますか?

Spring は-javaagent、AspectJ の読み込み時間を機能させるために vm オプションの使用を避け、代わりにクラスローダーに依存してエージェントを起動することを理解しています。

Java 仕様では、Java エージェントを使用する唯一の方法は-javaagentvm オプションを使用することであると規定されていると思いました。

私が間違っている?私の質問を明確にする公式の Java 仕様/ドキュメントを教えてもらえますか?

0 投票する
4 に答える
1564 参照

spring - JPA リポジトリ用に Spring LoadTimeWeaving を実行する方法

リポジトリ サポートを Eclipselink JPA Spring プロジェクトに追加しようとしています。Eclipselink には LoadTimeWeaving が必要です。これは完全に正しいわけではありませんが、後で Aspects も機能させたいと考えています。

実動アプリケーションは Tomcat で実行されます。JUnit を作成しようとせずに進めていれば、私はもう終わっているかもしれません。私の代替クラスローダーを無視しているように見えるので、私が実際に抱えているのは Eciplse (STS 3.4) の問題であると感じています。しかし、これはうまくいくはずであり、私は何か間違ったことをしているほど基本的なようです。

注釈と Java 構成のみを使用しています。以下の関連コード。

構成

非常に単純なエンティティ (本当に退屈な列の一部が削除されています):

もちろんリポジトリ:

そして最後に JUnit:

この VM ARG で JUnit を実行しようとしています: -javaagent:C:\Users\Terry\.m2\repository\org\springframework\spring-agent\2.5.6.SEC03\spring-agent-2.5.6.SEC03 .jar

AspectJ ウィーバーも追加しようとしましたが、役に立ちませんでした -javaagent:C:\Users\Terry\.m2\repository\org\aspectj\aspectjweaver\1.8.0\aspectjweaver-1.8.0.jar

Spring Tomcat ウィーバーを試したことはありませんが、それは正しい方向ではないようです。JUnitがクラスファイルを見つけるのに問題があった人を読んだことがあります。

かなり巨大なスタック トレースを貼り付けないと、次のようになります。

これはもちろん真実です。そのクラスローダーはウィービングをサポートしていません。しかし、私はそのローダーを使用しないように非常に懸命に努力しました。どんな助けでも大歓迎

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

spring - Spring Bean で AspectJ ロード時間のウィービングが機能しない

私は次のような同じ問題に直面しています:

Spring Bean で AspectJ の読み込み時間の織り方が機能しない

「オブジェクト」を返すソリューションは機能していますが、理由はわかりません。

私は経験しました:

http://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch08s08.html#aop-aj-ltw

しかし、まだ手がかりはありません。

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

aspectj - 春の AOP:

API をプロファイリングするオプションを探していました。Spring AOP は、メソッドをプロファイリングするためのオプションの 1 つです。

Spring AOP には、アスペクトを構成して使用するための 2 つのオプションがあります。

  1. context:load-time-weaver
  2. aop:aspectj-autoproxy

私の理解によると、最初のオプション (load-time-weaver) は、プロキシ オブジェクトを作成せずに読み込み時にウィービングを実行します。2 番目のオプション (aspectj-autoproxy) は、プロキシ オブジェクトを作成します。私はこれで正しいですか?プロキシ オブジェクトを作成すると、パフォーマンスが低下する可能性があると思います。そうじゃない?

パフォーマンスの向上を考慮すると、どのオプションを選択するのが最適ですか? 両方のアプローチの長所と短所は何ですか?

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

java - AspectJ の読み込み時間の織り方が機能しない

Spring プロジェクトを構成して、AspectJ の読み込み時間の織り込みで動作するようにしたいと考えています。私は次のことをしました:

  1. <context:load-time-weaver aspectj-weaving="on"/>アプリケーションコンテキストにa を追加しました
  2. キャッシュにアスペクトを追加
  3. 私のpom.xmlに行を追加しました

    /li>

テストがありますが、失敗します。

誰かが失敗する理由を説明できますか? ロード時間のウィービングが機能しないことは明らかです。

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

spring - Spring 4 LTW は 64 ビット JVM および Tomcat と互換性がありません

Java 8 への移行の一環として、また Spring 4 に敬意を表して、すべての 64 ビット コードにアップグレードしようと考えました。このアプリケーションは 32 ビットで完全に動作しますが、64 ビットではロード時のウィービングが機能しません (実際にはロードすらしません)。

アーキテクチャの仕様:

  • Java 8.0.5 (必要に応じて 32 ビットまたは 64 ビット)
  • Tomcat 7.0.54 (必要に応じて 32 ビットまたは 64 ビット)
  • 春 4.0.5
  • エクリプスリンク 2.5.1

Windows 上の Spring Tool Suite 3.5.1 でのテスト。展開ターゲット RHEL

JVM の起動:

問題のある Bean:

エラーは非常に簡単です。

私がしたことは、64 ビットの JVM に変更して、64 ビットの Tomcat コンテナーを使用することだけでした。非常に多くの時間をグーグルで検索し、さまざまなバージョンとエージェントを試してみましたが、解決策はまったく見つかりませんでした. どんな考えでも大歓迎です。

アップデート:

これは標準の Eclipse サーバー構成なので、基本的には startup.sh の開始を意味すると思います。追加の JVM プロパティを以下に示します。現時点では AspectJ のアスペクトを展開していないことに注意してください。これは次のリリースです。結果は、指定された AspectJ ウィーバーの有無にかかわらず同じです。

スタックトレース: