Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Instrumentación de código de inicio
nota
End-of-support aviso: el 25 de febrero de 2027, AWS X-Ray dejará de ofrecer soporte para AWS X-Ray SDKs and daemon. A partir del 25 de febrero de 2027, dejaréis de recibir actualizaciones ni versiones. Para obtener más información sobre el cronograma de soporte, consulteCronología del fin del soporte de X-Ray SDK y daemon. Se recomienda migrar a OpenTelemetry. Para obtener más información sobre la migración a OpenTelemetry, consulte Migración de una instrumentación de rayos X a una instrumentación. OpenTelemetry
El SDK de X-Ray para Java crea automáticamente segmentos para solicitudes entrantes. Siempre que haya una solicitud en el ámbito, puede utilizar clientes instrumentados y registrar subsegmentos sin problema. Sin embargo, si intentas utilizar un cliente instrumentado en el código de inicio, obtendrás un. SegmentNotFoundException
El código de inicio se ejecuta fuera del request/response flujo estándar de una aplicación web, por lo que es necesario crear segmentos manualmente para instrumentalizarlo. Scorekeep muestra la instrumentación de código de inicio en sus archivos WebConfig
. Scorekeep llama a una base de datos SQL y Amazon SNS durante el startup.

La clase WebConfig
predeterminada crea una suscripción de Amazon SNS para notificaciones. Para proporcionar un segmento para que el SDK de X-Ray escriba cuando se utiliza el cliente de Amazon SNS, Scorekeep llama a beginSegment
y endSegment
en la grabadora global.
ejemplo src/main/java/scorekeep/WebConfig.java
: cliente del SDK de AWS instrumentado en el código de inicio
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();
En RdsWebConfig
, que Scorekeep utiliza cuando hay una base de datos de Amazon RDS conectada, la configuración también crea un segmento para el cliente SQL que utiliza Hibernate cuando aplica el esquema de base de datos durante el startup.
ejemplo src/main/java/scorekeep/RdsWebConfig.java
: cliente de base de datos SQL instrumentado en código de inicio
@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
se ejecuta de forma automática y utiliza un cliente SQL. Dado que el cliente está instrumentado, Scorekeep debe anular la implementación predeterminada y proporcionar un segmento para que lo utilice el SDK cuando se llama al cliente.