さまざまな方法をアドバイスするために、読み込み時間の織り方でAspectJを使用するアプリケーションがあります。ソースコードを変更したり、プログラムを再起動したりせずに、アスペクトを無効にするスイッチをプログラムに追加したいと考えています。オフになっている間は、オーバーヘッドをできるだけ少なくする必要があります。ありがとう!
1062 次
1 に答える
4
私の知る限り、バイトコードからいくつかのアドバイスを解きほぐす方法はありません。既存の拡張バイトコードを使用している場合、ウィービング* なしでアプリケーションを再起動する以外に、それを削除する方法はないと思います。
削除できるように物事を設定することについて話している場合 - ウィービングを削除できないのは本当かもしれませんが、確かにif (useWeavedCode)
そのすべてにグローバルチェックを追加し、もちろんその変数を追加するだけでなく、適切な方法で変更する方法 (JMX を介した公開、新しいコンソール コマンド、新しい管理者 JSP ページなど)。次に、この新しい動作を防止したい場合は、この新しいオプションで無効にすることができます。
もちろん、これは実際にコードを削除するわけではなく、無効になっている間にブール値のパラメーター検索のコストが発生することに注意してください。しかし、それ以上のことはできないと思います。
*厳密には、クラスを再度ロードする必要があるため、アプリを再起動する必要はありませんが、実際には、以前にクラスローダーにフックを配置したことがない限り、これが利用可能な最も簡単なオプションです。
于 2010-07-14T22:38:37.813 に答える