The Ghost of Deployment Descriptors Past

A few weeks ago I sat down to build a small clinic-appointment backend on WildFly, just to scratch an itch and relearn Jakarta EE properly. Nothing dramatic — a REST API, a booking flow, some business rules, and a small Vue 3 frontend on top so I'd have something to click through while I tested it. The kind of thing I'd normally reach for Spring Boot to knock out in an afternoon.

Except I didn't reach for Spring Boot. I reached for EJB.

And the second I typed @Stateless into an empty Java file, a very specific kind of dread crawled up my spine. Because the last time I wrote a line of EJB code with any seriousness, it was EJB 2.1, and it was not a good time.

If you never lived through that era, let me set the scene. To write what should have been a five-line "create a customer" method, you needed: