I'd like to clarify the effects of these dependencies on service deployment and creation/initialization.
The way it's now, these dependencies don't affect deployment, i.e. if a dependency specified in @Resource is missing or there is a circular dependency expressed with @Resource, this won't affect deployment.
It may affect runtime though, e.g. an initialization of an mbean, but only if the dependency is associated with an injection target (i.e. was specified on a field or a method).
The question is should these dependencies be checked for resolution at deploy time and fail the deploy if they can't?
If you can't resolve the resource, you can never set the proper dependency.
I'm in favor of fail fast.