you are bringing up valid points. I looked a lot into the BV + JAX-RS integration as part of my work of integrating JSR 371 (MVC 1.0) with the validation mechanism provided by JAX-RS. And in my opinion the validation chapter in the JAX-RS spec needs some clarifications. It is simply not defined which ValidatorFactory/Validator should be used for the validation.
First of all: The CDI provided ValidatorFactory you mentioned is actually the "default ValidatorFactory" (as defined by BV), which is automatically configured from validation.xml. So basically CDI just provides a simple way to get this default factory. In my opinion JAX-RS implementations should use this default factory for validation. But I agree that JAX-RS implementations will need a custom MessageInterpolator in this case. However, this should be easy. Something like:
ValidatorFactory validatorFactory = Validation.byDefaultProvider()
.configure()
.messageInterpolator( new CustomJaxRsMessageInterpolator() )
.buildValidatorFactory();
This way you will get a ValidatorFactory with all the defaults from validation.xml except the MessageInterpolator, which is customized for the JAX-RS usecase. Maybe this is acceptable if it is mentioned in the spec.
However, I also agree that it would be nice to have a simpler way to provide the Locale to BV.
Christian