Analisi del codice di avvio - AWS X-Ray

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Analisi del codice di avvio

L'SDK X-Ray per Java crea automaticamente dei segmenti per le richieste in entrata. Se una richiesta rientra nell'ambito, puoi utilizzare i client analizzati e registrare i sottosegmenti senza problemi. Se provi ad utilizzare un client analizzato nel codice di avvio, tuttavia, riceverai una SegmentNotFoundException.

Il codice di avvio viene eseguito al di fuori della richiesta standard/del flusso di risposta di un'applicazione web, quindi è necessario creare manualmente i segmenti per analizzarlo. Scorekeep mostra l'analisi del codice di avvio nel suo file WebConfig. Durante l'avvio, Scorekeep effettua una chiamata a un database SQL e a.

Il valore di timeout predefinito perWebConfigclass crea una sottoscrizione Amazon SNS per le notifiche. Per fornire un segmento su cui l'SDK X-Ray possa scrivere quando viene invocato il client Amazon SNS, Scorekeep chiamabeginSegmenteendSegmentsul registratore globale.

Esempio src/main/java/scorekeep/WebConfig.java— StrumentataAWSSDK client nel codice di avvio
AWSXRay.beginSegment("Scorekeep-init"); if ( System.getenv("NOTIFICATION_EMAIL") != null ){ try { Sns.createSubscription(); } catch (Exception e ) { logger.warn("Failed to create subscription for email "+ System.getenv("NOTIFICATION_EMAIL")); } } AWSXRay.endSegment();

Nello statoRdsWebConfig, che Scorekeep usa quando viene connesso un database Amazon RDS, la configurazione crea inoltre un segmento per il client SQL che viene utilizzato da Hibernate quando si applica lo schema del database durante l'avvio.

Esempio src/main/java/scorekeep/RdsWebConfig.java— Controllo client database SQL nel codice di avvio
@PostConstruct public void schemaExport() { EntityManagerFactoryImpl entityManagerFactoryImpl = (EntityManagerFactoryImpl) localContainerEntityManagerFactoryBean.getNativeEntityManagerFactory(); SessionFactoryImplementor sessionFactoryImplementor = entityManagerFactoryImpl.getSessionFactory(); StandardServiceRegistry standardServiceRegistry = sessionFactoryImplementor.getSessionFactoryOptions().getServiceRegistry(); MetadataSources metadataSources = new MetadataSources(new BootstrapServiceRegistryBuilder().build()); metadataSources.addAnnotatedClass(GameHistory.class); MetadataImplementor metadataImplementor = (MetadataImplementor) metadataSources.buildMetadata(standardServiceRegistry); SchemaExport schemaExport = new SchemaExport(standardServiceRegistry, metadataImplementor); AWSXRay.beginSegment("Scorekeep-init"); schemaExport.create(true, true); AWSXRay.endSegment(); }

SchemaExport viene eseguito automaticamente e utilizza un client SQL. Poiché il client è analizzato, Scorekeep deve sostituire l'impostazione predefinita e fornire un segmento che l'SDK possa utilizzare quando il client viene richiamato.