View a markdown version of this page

Menginstrumentasi kode perusahaan rintisan - AWS X-Ray

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menginstrumentasi kode perusahaan rintisan

catatan

X-Ray SDK/Daemon Pemberitahuan Pemeliharaan — Pada tanggal 25 Februari 2026, AWS X-Ray SDKs/Daemon akan memasuki mode pemeliharaan, di mana AWS akan membatasi rilis X-Ray SDK dan Daemon untuk mengatasi masalah keamanan saja. Untuk informasi selengkapnya tentang garis waktu dukungan, lihatGaris waktu Dukungan X-Ray SDK dan Daemon. Kami merekomendasikan untuk bermigrasi ke OpenTelemetry. Untuk informasi selengkapnya tentang migrasi ke OpenTelemetry, lihat Migrasi dari X-Ray instrumentasi ke instrumentasi. OpenTelemetry

X-Ray SDK for Java secara otomatis membuat segmen untuk permintaan yang masuk. Selama permintaan berada dalam cakupan, Anda dapat menggunakan klien berinstrumen dan mencatat subsegmen tanpa masalah. Namun, jika Anda mencoba menggunakan klien yang diinstrumentasi dalam kode startup, Anda akan mendapatkan SegmentNotFoundExceptionfile.

Kode startup berjalan di luar request/response aliran standar aplikasi web, jadi Anda perlu membuat segmen secara manual untuk menginstrumennya. Scorekeep menunjukkan instrumentasi kode perusahaan rintisan dalam file WebConfig. Scorekeep memanggil basis data SQL dan Amazon SNS selama perusahaan rintisan.

Diagram yang menunjukkan klien terhubung ke Scorekeep-init, yang terhubung ke database SQL dan SNS.

Kelas WebConfig default membuat langganan Amazon SNS untuk notifikasi. Untuk menyediakan segmen bagi X-Ray SDK untuk menulis ketika klien Amazon SNS digunakan, Scorekeep beginSegment memanggil endSegment dan pada perekam global.

contoh src/main/java/scorekeep/WebConfig.java — Instrumentasi AWS Klien SDK dalam kode startup
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();

Di RdsWebConfig, yang Scorekeep gunakan saat basis data Amazon RDS terhubung, konfigurasi juga membuat segmen untuk klien SQL yang digunakan Hibernate saat menerapkan skema basis data selama perusahaan rintisan.

contoh src/main/java/scorekeep/RdsWebConfig.java — Klien database SQL yang diinstrumentasi dalam kode startup
@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 berjalan secara otomatis dan menggunakan klien SQL. Karena klien diinstrumentasi, Scorekeep harus mengganti implementasi default dan menyediakan segmen SDK untuk digunakan ketika klien dipanggil.