Debugging it a bit, this seems to be happening because the same {{ MonitoringFilter }} instance is always injected (its {{ ManagedBean }} scope is {{ ApplicationScope }} ), but the {{ Application }} instance injected into {{ MonitoringFilter }} is not a proxy that can resolve the {{ Application }} instance relevant to the request, as required in the JAX-RS 2.0 spec, section 9.1 Concurrency. It is simply a direct reference to one of the two {{ Application }} instances defined by the application.
The fix seems to be to inject a proxy for the {{ Application }} and make it resolve to the relevant {{ Application }} instance. Or have the filter bean be request scoped if it has fields with a {{@Context}} annotation. That way the injected {{Application}} would actually be of the right type and have the right {{@ApplicationPath}} annotation. |
|