Replying to my own question with a work-around and more details for those smarter than me to help understand what's going on.
I don't know for sure that using @Inject won't work because the Application Scoped bean is never getting initialized. I guess I was assuming the container was handling the life-cycle of these "managed" beans, when in fact the container does not. If this project was utilizing
JSF, however, the FacesContext (or whatever) will handle the life-cycle and the Application Scoped beans do get created. This just isn't true for Web Services I'm finding out.
I don't know if there's a way to manually bootstrap the "managed bean" life-cycle system. If there is, I'd love to know how. It would be useful to do so for
Java tool (i.e. no container) projects.
What I did to get around this was to inject EJBs instead. Since this is a new project I have the luxury to do what it takes to get it to work. Since the container manages the life-cycle of the
EJB, the bean will get instantiated and be ready for injection without any hassles. In my case the utility objects are annotated as @Singleton EJBs and I use the @EJB injection annotation in the @WebService beans.
It seems to be working with this work around. I just hope more work is done on JEE to makes "bean management" more integrated with fewer gotchas. Cheers!