Возможно ли получить путь контекста для приложения Java EE 7 на этапе построения экземпляра ресурса класса JAX-RS 2.0 (и, возможно, при статическом времени инициализации статического класса) или он доступен только во время запросов конечным точкам в классе ресурсов?Контекст контекста приложения в конструкции экземпляра ресурса JAX-RS 2.0
По пути контекста Я имею в виду строку, которая будет возвращена вызовом HttpServletRequest#getContextPath()
в приложении Java EE 7.
Я предполагаю, что у вас, вероятно, может быть несколько псевдонимов контекстного пути для развернутого приложения. Если это так, то путь контекста может быть доступен только во время запроса.
Однако меня не интересует контекстный путь, который фактически использовался в URL-адресе для запроса. Канонический или стандартный контекстный путь, который будет работать для конечных точек в классе, достаточно для меня.
Техника для получения такого пути контекста не обязательно должна быть JAX-RS 2.0. Он может исходить из некоторых других спецификаций Java EE 7, если он работает на время построения класса ресурса JAX-RS 2.0 (или, более широко, при статическом времени инициализации класса).
Update:
Я забыл упомянуть, что класс CDI @ApplicationScoped
, поэтому его конструктор не вызывается во время запроса, как это было бы, если бы это было @RequestScoped
.
Спасибо за информацию. Я попробую. Я действительно видел этот класс раньше, но со скидкой, так как его javadocs указывают: «Все методы бросают java.lang.IllegalStateException, если вызывается за пределами области запроса» http://docs.oracle.com/javaee/7/api/javax /ws/rs/core/UriInfo.html – XDR
Кроме того, я изначально забыл упомянуть, что класс является '@ ApplicationScoped', поэтому конструктор не вызывается во время запроса. – XDR
Действительно, но javadoc указывает его снова на каждый метод, кроме 'getBaseUri()' и 'getBaseUriBuilder()'. Я пробовал Wildfly 8.1, и это сработало. Ресурс был также '@ ApplicationScoped'. – Benjamin