問題タブ [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.
spring - aspectj-weaver と spring-weaver の Load-Time-Weaving の違い
spring と AspectJ を使用した Load-Time-Weaving を使用すると、奇妙な問題が発生します。私の Apsects の 1 つで、クラス org.springframework.flex.security3.SpringSecurityLoginCommand の「doAuthentication」メソッドの呼び出しに反応したいと考えました。したがって、メソッドを作成しました:
このアスペクトは、aspectj-weaver エージェントを使用すると正しく織り込まれますが、spring-weaver を使用すると無視されます。残念ながら、正しいアスペクトスプリング統合が必要な場合は、スプリングウィーバーを使用する必要があります。アスペクトを織り込む唯一の方法は、ターゲット クラスのすべてのメソッドに織り込み、アスペクト呼び出しをプログラムでフィルタリングすることです。
上記のコードを使用して、すべてを正しく織り込むことができましたが、これは私にとって大きなハックのように思われるため、満足していません。
Spring-Weaver を使用して、aspectj-weaver と同じように織ることができない理由を誰か説明してもらえますか?
クリス
spring - SpringのLoadTimeWeaverエージェントが起動しない
SpringとAspectJを使用してロードタイムウィービングを実装しようとしています。私の知る限り、すべてが適切に構成されていますが、統合テストを実行しようとするとエラーが発生し続けます。
私のアプリケーションコンテキストには次のものが含まれます。
そして私のpomには以下が含まれています:
スプリングエージェントをロードすることができないように見えますが、その理由を理解できないようです。よろしくお願いします。
java - Web アプリケーション (Vaadin + Spring) での JavaConfig の問題
更新しました
疑わしいログ エントリを見つけました。
/更新しました
私は Vaadin + Spring アプリケーションに取り組んでおり、JavaConfig を使用したいと考えています。
いくつかのチュートリアルに従って、それらを個別に構築しましたが、それらをマージすると、次のようになりました(最初のcodesnipet App.java - logger.info(">>mainWindow is null");を参照)
たとえば、applicationContextなどで、構成のいくつかのバリエーションを試しました。
だから私の質問は:どうすれば本当の問題を見つけることができますか?
事前にお時間と労力をいただきありがとうございます。
チャバ
App.java
AppConfig.java
この!tutorial リンクに基づく web.xml !
spring - Spring LTW 環境で Maven を使用して単体テストを実行する
Spring LoadTimeWeaving 機能を使用して、ddd アーキテクチャでアプリケーションを開発しています。問題は、Maven ではなく、Eclipse を使用して Junit テストを実行できることです。さまざまなサイトで提供されているすべてのオプションを試しましたが、うまくいきません。次の例外が発生します。
原因: org.springframework.beans.factory.BeanCreationException: 'loadTimeWeaver' という名前の Bean の作成中にエラーが発生しました: Bean の初期化に失敗しました。ネストされた例外は java.lang.IllegalStateException です: ClassLoader [sun.misc.Launcher$AppClassLoader] は「addTransformer(ClassFileTransformer)」メソッドを提供しません。カスタム LoadTimeWeaver を指定するか、Spring のエージェントで Java 仮想マシンを起動します: -javaagent:org.springframework.instrument.jar
argLine の一部としてインストゥルメント jar を Surefire プラグインに追加しました。以下は私のコードアーティファクトです。どこが間違っているか、または他の解決策があれば教えてください。
私は開発にEclipse Indigo、Mac OSXでMaven 3.0を使用しています
pom.xml (重要な詳細のみ短縮)
springContext.xml (LTW機能を有効にするための次のタグがあります)
java - Spring: @Resource を使用した具象クラスの注入には CGLIB が必要ですか
spring-instrument.jar を使用して AspectJ LTW で Spring 3.0.6 を構成しました。
依存関係から CGLIB を削除すると、MyBean が作成された (およびその @PostConstruct が実行された) 後でも、次の例外が発生します。
ロードタイムウィーバーが存在する場合でも、CGLIB を使用する必要があるということですか?
java - AspectJロードタイムウィービング+Spring3.0.5.RELEASE +Tomcat7が機能しない
Webアプリケーションでロード時のウィービングがまだ機能していない理由を理解しようとしています。私の通常のアプリケーション(webappではない)では、それは機能しています。
テストプロジェクトはgithub(github / peterbollen / helloLtw)にあります:helloLtwAspect
アプリケーションを起動すると、ログにロード時ウィーバーが機能していることが示されます(ログの表示)。しかし、EchoServletをトリガーすると、EchoAspectが組み込まれません(ログを表示)。
誰かアイデアがありますか?コードをチェックして、自分で試してみてください(READMEをテストしました:))アドバイスをありがとう;-)
更新1
spring-instrumentの代わりにjavaagentaspectjweaverを使用すると、ロード時のウィービングが機能します。
なんで?「aspectj-weaverとspring-weaverのLoad-Time-Weavingの違い」を検索してください。リンクを貼り付けることができません(クレジットが足りません:-))。
更新2
githubコードも更新しました。
spring - 春のウェブアプリモニターnewrelicがエンティティマネージャーとloadtimeweaverの競合
Spring Webアプリケーションは、newrelicで監視する必要があります。spring-agentはloadTimeWeaverとしてロードされており、spring-agentはjpa load enhaneとcustomconfigに使用し、spring-agentとnewrelicが一緒にロードするように構成するとjava_opts
、アプリケーションのデプロイ時にjpaのロードの例外がスローされます...
org.springframework.beans.BeanInstantiationException:Beanクラスをインスタンス化できませんでした[org.springframework.context.support.ClassPathXmlApplicationContext]:コンストラクターが例外をスローしました。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:クラスパスリソース[spring-config.xml]で定義された「entityManagerFactory」という名前のBeanの作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。ネストされた例外はjava.lang.IllegalAccessError:クラスsun.reflect.GeneratedConstructorAccessor9はそのスーパークラスsun.reflect.ConstructorAccessorImplにアクセスできません原因:org.springframework.beans.factory.BeanCreationException:クラスパスリソースで定義された「entityManagerFactory」という名前のBeanの作成中にエラーが発生しました[spring-config.xml]:initメソッドの呼び出しに失敗しました。ネストされた例外はjava.lang.IllegalAccessError:クラスsunです。
Spring AgentとNewrelic(Webアプリケーションのパフォーマンス管理の監視)を互いに競合することなくロードするように構成するにはどうすればよいですか?
java - AspectJ LTW 使用時の Spring キャッシングの問題
Spring 3.0 RC1 のキャッシュ抽象化メカニズムを使用しています。バイトコード (AspectJ ベース) をセットアップして、クラス自体から呼び出されるメソッドにキャッシュ メカニズムを適用できるようにしました。最初にプロキシベースのアプローチを使用していたことは言うまでもありません: すべてが正常に機能していました (メソッドが別のオブジェクトから呼び出されるため)。
AspectJ に切り替えるとすぐに (を介して LTW を有効にし、適切な jar をその場所に追加しました - すべて正常に動作し、例外はスローされません)、キャッシュは行われません。
なにか提案を?ありがとうございました。
====後で編集========
org.springframework の DEBUG にログを設定しました。
プロキシ モードを使用している場合は、「Adding cacheable method 'getLargeAssetContent'....」というメッセージがはっきりと表示されます。ここで、getLargeAssetContent は私の「キャッシュ可能な」メソッドです... (以下を参照してください)
アスペクトモードを使用している場合、このメッセージは表示されません....すべてのリクエストはDAOレイヤーに送られます...キャッシュが機能する状況では、リクエストはサービスレイヤーで停止します。
私が間違っていることは何ですか?aop.xml は必要ですか? AOP を使用していなかったので、aop.xml はまだありません。
ご協力ありがとうございました。
*> *2011-12-12 16:38:55,998 DEBUG [org.springframework.cache.annotation.AnnotationCacheOperationSource]
(http-127.0.0.1-8080-6) 次の属性を持つキャッシュ可能メソッド「getLargeAssetContent」を追加: [CacheOperation[public com.mycompany.myprj.model.AssetContent com.mycompany.myprj.dao.jcr.AssetDAOImpl.getLargeAssetContent(java.lang) .String) com.mycompany.myprj.dao.MyPrjPersistenceException をスローします] caches=[assets] | 条件='' | key='#nodeId'] 2011-12-12 16:38:56,013 INFO [com.mycompany.myprj.dao.jcr.AssetDAOImpl] (http-127.0.0.1-8080-6) アセットのコンテンツ (getLargeAssetContent) の取得id=575d8dc0-01be-41e4-85ce-a654fab97fe8 2011-12-12 16:38:56,092 INFO [com.mycompany.myprj.dao.jcr.AssetDAOImpl] (http-127.0.0.1-8080-6) のノードからid=575d8dc0-01be-41e4-85ce-a654fab97fe8** のノードからのアセットのコンテンツ
*
//コンテンツは現在キャッシュされています 2011-12-12 16:38:57,654 DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] (http-127.0.0.1-8080-6) シングルトン Bean のキャッシュされたインスタンスを返す ' assetController' 2011-12-12 16:38:57,654 DEBUG [org.springframework.web.servlet.DispatcherServlet] (http-127.0.0.1-8080-6) Last-Modified value for [/myprj/asset/get/575d8dc0- 01be-41e4-85ce-a654fab97fe8] は: -1 2011-12-12 16:38:57,654 INFO [com.mycompany.myprj.services.AssetService] (http-127.0.0.1-8080-6) id のアセットを取得しています: 57
*
spring - Aspectj を使用して Websphere 8 にサードパーティ クラスを織り込む時間の読み込み
サードパーティのライブラリ クラス ( SpringBeanELResolver ) を織り込むために AspectJ(1.6.12) を使用しています。を使用して LTW を有効にし<context:load-time-weaver/>
、アスペクトは AspectJ アノテーション構成を使用します。Aspectj のデバッグ出力に表示されるクラスの完全なリストを使用して、すべてが jetty で正常に動作します。Spring で説明されているように、Websphere プラットフォームでは必要ないため、-javaagent は使用しません。
Websphere 8 では、Spring が正しく初期化WebSphereLoadTimeWeaver
し、Aspectj が正しく初期化されたというログが表示されます。しかし、aspectj のデバッグ出力にはクラスの一部しか表示されません。SpringBeanELResolverもウィービングには含まれていません。その結果、私たちのクラスは織り込まれていません。
クラスなど、デバッグ出力にリストされているクラスを織り込むことができます。
Classloading ポリシーを PARENT_LAST に設定します。
いくつかのログと構成を次に示します。
Websphere SystemErr ( SpringBeanELResolverを含むほとんどのサードパーティ クラスはここには表示されません)
Websphere SystemOut
aop.xml
CompoundClassLoader が WEB-INF/lib のすべてのサードパーティ ライブラリをロードする際に問題が発生する可能性があると思います。または、Aspectj と CompoundClassLoader の間の何かです...