12

@Configurableドメインオブジェクト(スプリングコンテナによって管理されていない)をセットアップしようとしています。
私は-javaagent:path/to/spring-instrument.jarをJVM引数として追加しましたが、この-javaagentを適所に置かなくてはならないかどうかは、私には100%明確ではありません。特にこの行、私はdocumentationを誤って解釈することができるのTomcat 8上でこれを実行しているが、私がこれを達成する別のメカニズムを使用することができる場合がそうです:Tomcat 8、Springブート、@ Configurable LoadTimeWeaving with -javaagent?

Tomcat 8.0にもうTomcatInstrumentableClassLoaderを定義しないでください。また、高い。代わりに、TomcatLoadTimeWeaver戦略によって、Springが自動的にTomcatの新しいネイティブInstrumentableClassLoader機能を使用するようにします。以下

コードサンプル:

​​3210
@Configurable 
public class MyDomainObject { 

    @Autowired 
    private MyService myService; 

    public MyService getMyService(){ 
     return myService; 
    } 
} 

public class MyService { 
    private static final Logger log = LoggerFactory.getLogger(MyService.class); 

    public void test(){ 
     log.info("test"); 
    } 
} 

だから、-javaagentを指定せずに織り込まこれら@Configrableのオブジェクトを取得する方法はありますか?スタンドアロンのTomcat 8サーバーにWARとして展開したり、埋め込みTomcat 8サーバーを「ファット」ジャーとして起動するときにこれを達成できるかどうかを学ぶことに興味があります。

スタンドアローンに展開するTomcat 8サーバーはエラーをスローしませんが、上記のgetMyService()メソッドはnullを返します。脂肪jarファイルが起動時に次のエラーがスローされますよう起動:

Caused by: java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar

私は、本当の問題は、私のTomcat 8でSpecify a custom LoadTimeWeaver行う方法ですと仮定しますか?ドキュメントが述べているように、自動的に何も起こっていないようですが、やはり私はそれが正確に何を意味するのかを誤解しているかもしれません。

+1

私は今、同じ問題を抱えていますが、解決しましたか? – alexanoid

+0

@alexanoid残念ながら私はしていません – mjj1409

答えて

-2

あなた自身の注釈@MyConfigurableの作成についてはどうですか?メソッドが呼び出されたときに好きなことをすることができます。

import java.lang.annotation.ElementType; 
import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 
import java.lang.annotation.Target; 

@Target(ElementType.CONSTRUCTOR) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface MyConfigurable 
{} 
関連する問題