6
votes

Comment configurer le tissage de temps de charge avec le printemps et le tomcat sans utiliser le -JavaAgent sur la ligne de commande

J'utilise le printemps 3.2.9, Tomcat 6.0.44

J'essaie de configurer le fournisseur d'instrumentation à ressort de mon application (par exemple, Spring-Instrumentation.jar) pour le tissage de temps en temps libre, lorsqu'il est déployé sur Tomcat.

J'ai une obligation de ne pas utiliser: "-JavaAgent: /path/path/spring-instrument.jar" sur la ligne de commande pour faire la configuration. p>

J'ai lu que je peux configurer l'instrumentation de printemps en modifiant l'élément de La configuration Tomcat de ma application (dans le contexte.xml de Tomcat's Server.xml ou mon application Web). Ajout de l'élément approprié aux résultats Server.XML dans mon application étant correctement configuré pour exécuter avec le fournisseur d'instrumentation de Spring. L'ajout au contexte.xml (voir ci-dessous) n'entraîne pas une configuration de travail. P>

J'ai un fichier meta-Inf / AOP.XML, ressemble à ceci: p>

        SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
        java.lang.IllegalStateException: Must start with Java agent to use InstrumentationLoadTimeWeaver. See Spring documentation.
    etc....


1 commentaires

Même problème! Toute solution?


3 Réponses :


2
votes

Ceci est le code que j'ai réussi à utiliser afin de supprimer l'exception que vous avez mentionnée. Fondamentalement, vous devez mettre en œuvre le fichier LoadTIMeWeVouvantConfigurier et remplacer la méthode getloadTimeweaver ().

@Configuration
@ComponentScan(basePackages = "org.myproject")
@EnableAspectJAutoProxy
@EnableSpringConfigured
@EnableLoadTimeWeaving(aspectjWeaving = EnableLoadTimeWeaving.AspectJWeaving.AUTODETECT)
public class Config implements LoadTimeWeavingConfigurer {

    @Override
    public LoadTimeWeaver getLoadTimeWeaver() {
        return new ReflectiveLoadTimeWeaver();
    }

    @Bean
    public InstrumentationLoadTimeWeaver loadTimeWeaver()  throws Throwable {
        InstrumentationLoadTimeWeaver loadTimeWeaver = new InstrumentationLoadTimeWeaver();
        return loadTimeWeaver;
    }

}


2 commentaires

@Ryan je pourrais obtenir la même chose dans XML Config. Regardez le Spring Doc - docs.spring.io/spring/docs/current/javadoc-api/org/... Cela pourrait aider. Merci


Merci pour le lien. Cela semble plus détaillé que ce que j'avais trouvé. Cela n'a pas fonctionné sur ma première tentative mais agréable d'entendre que c'est possible.



-1
votes
https://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Static_Weaving
Try maven plug-in from the above link. It's working


1
votes

J'ai utilisé Invesdwin-Instrument pour effectuer cela. Il vous permet d'utiliser de manière dynamique une instrumentation de tissage de temps de charge afin de ne pas avoir à utiliser de Javaagent.

Cela m'a pris un peu d'effort pour le faire fonctionner avec Tomcat 8.5. Mais il fonctionne enfin à l'aide de cette configuration avec le démarrage du ressort: xxx

Il devrait également fonctionner avec la version précédente de tomcat.

considère


0 commentaires