Я сделал простой плагин ORDS, который имеет простой фильтр сервлетов:
import oracle.dbtools.plugin.api.di.annotations.Priority;
import oracle.dbtools.plugin.api.di.annotations.Provides;
@Priority
@Provides
public class OrdsFilter implements Filter {
@Override
public void init(FilterConfig fc) throws ServletException {
System.out.println(getClass().getName() + " init, " + fc);
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain fc) throws IOException, ServletException {
System.out.println(getClass().getName() + " doFilter");
fc.doFilter(req, resp);
}
@Override
public void destroy() {
System.out.println(getClass().getName() + " destroy");
}
}
, скомпилировал его и поместил в ords.war как плагин.Он вызывается, как и ожидалось.
Следующее, что мне нужно сделать, это каким-то образом получить дескриптор объекта соединения JDBC, чтобы я мог записать данные запроса и ответа в таблицу базы данных.Я пытался с аннотацией Inject ввести соединение в фильтре, но теперь фильтр не вызывается.
Я предполагаю, что проблема в том, что ORDS не знает в тот момент, какое соединение дБ будет использоваться дляобрабатываете этот запрос, поэтому фильтр не может получить дескриптор соединения с БД?
С другой стороны, я думаю, что не могу использовать сервлет для этой цели, потому что сервлет привязан кконкретный URL, верно?
Есть предложения?