Ich versuche, ein @Configurable
Domain-Objekt (nicht von der Feder Container verwaltet).
Ich habe dies funktioniert, indem ich die -javaagent:path/to/spring-instrument.jar
als JVM-Argument hinzufügen, aber es ist nicht 100% klar für mich, ob oder nicht dieser -Javaagent muss vorhanden sein. Ich laufe dies auf Tomcat 8. Ich die documentation werden falsch interpretiert kann, aber es scheint ich in der Lage sein kann, einen anderen Mechanismus zu verwenden, um dies zu erreichen, insbesondere dieser Zeile:Tomcat 8, Spring Boot, @konfigurierbares LoadTimeWeaving ohne -Javaagent?
Sie
TomcatInstrumentableClassLoader
nicht definieren mehr aufTomcat 8.0
und höher. Lassen Sie Spring stattdessen automatisch die neue systemeigeneInstrumentableClassLoader
-Funktion von Tomcat über dieTomcatLoadTimeWeaver
-Strategie verwenden.
Codebeispiele unter:
@SpringBootApplication
@EnableLoadTimeWeaving
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Bean
public MyService myService(){
return new MyService();
}
}
@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");
}
}
So ist es eine Möglichkeit, diese @Configrable Objekte gewebt zu erhalten, ohne die -javaagent Angabe? Ich wäre daran interessiert zu erfahren, ob ich dies erreichen kann, wenn ich als WAR auf einem Standalone Tomcat 8-Server und/oder den eingebetteten Tomcat 8-Server als "fetter" Krug starte.
Wie es steht Bereitstellung zu Stand Alone Tomcat 8 Server wirft keinen Fehler, aber die getMyService()
Methode oben gibt null zurück. Starten wie ein fettes jar den folgenden Fehler während des Startvorgangs führt:
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
Ich nehme an, die wirkliche Frage ist, wie kann ich Specify a custom LoadTimeWeaver
in Tomcat 8? Nichts scheint automatisch zu geschehen, wie die Dokumentation sagt, aber ich kann falsch interpretieren, was genau das bedeutet.
Ich habe das gleiche Problem jetzt, haben Sie es gelöst? – alexanoid
@alexanoid habe ich leider nicht – mjj1409