You know what's funny? Spring (earlier versions) had even more xml ;-)
I dunno it just worked for me. But I kept using the standards, no vendor lockin stuff, which bea etc always wanted.
I think the servlet design is great, the whole packaging/deployment model is great. And then well the session beans were overkill in general, so they were swapped out quite early by me. Swapped jsp out for I think velocity templates. And that application is still alive, running, and on the same platform.
And Java meant, at least for me and how I configured it, proper debugging and IDE support (love Eclipse), hot code reload, easy releases, repeatability, ci/cd. The last 20 years, no __significant__ improvements in my opinion.
I think servlets are great, too. Coincidentally I also swapped out JSP for Freemarker and then Velocity templates pretty early. The session beans and entity beans I could both live without. The "heavy weight" nature of the commercial app servers really bothered me. JBoss was fine, but WebLogic, WebSphere, etc were awful.
Just a lot of boilerplate code, but the overal architecture and structure of JEE is still very sound