"using lookups instead of DI allows you to determine which resource to use dynamically at runtime instead of being constrained to using static configuration that cannot be changed programmatically."
I think that the reason is that with DI you Hardcode the resource in the bean with for instance an annotation. On Runtime, you cannot assign a variable to the annotation, so, you need to stick with it...
With Lookups, you could theorically pass the reference as a variable, so that the resource reference can be decided at runtime...
for instance:
Using DI:
Using JNDI lookup:
Dave