Вы обязательно должны проверить фильтры JAX-RS (org.apache.cxf.jaxrs.ext.RequestHandler), чтобы перехватывать, проверять, манипулировать запросом, например, для параметров запроса безопасности или проверки.
Если выобъявив все ваши параметры с помощью аннотаций, вы можете проанализировать файл web.xml для имен классов ресурсов (см. возможное регулярное выражение ниже) и использовать полные квалифицированные имена классов для доступа к объявленным аннотациям для методов (например, javax.ws.rs.GET) иПараметры метода (например, javax.ws.rs.QueryParam) для сканирования всех доступных ресурсов веб-службы - таким образом, вам не нужно вручную добавлять все классы ресурсов в ваш фильтр.Сохраните эту информацию в статических переменных, так что вам просто нужно проанализировать этот материал при первом обращении к фильтру.
В вашем фильтре вы можете получить доступ к org.apache.cxf.message.Message для входящего запроса.Строка запроса проста для доступа - если вы также хотите проверить параметры формы и составные имена, вам необходимо повторно просмотреть содержимое сообщения и записать его обратно в сообщение (это становится немного неприятно, поскольку вам приходится иметь дело с границами составных частей и т. Д.).
Чтобы «проиндексировать» ресурсы, я просто беру метод HTTP и добавляю путь (который затем используется в качестве ключа для доступа к объявленным параметрам.
Вы можете использовать ServletContext для чтенияФайл web.xml. Для извлечения классов ресурсов может пригодиться это регулярное выражение
String webxml = readInputStreamAsString(context.getResourceAsStream("WEB-INF/web.xml"));
Pattern serviceClassesPattern = Pattern.compile("<param-name>jaxrs.serviceClasses</param-name>.*?<param-value>(.*?)</param-value>", Pattern.DOTALL | Pattern.MULTILINE);