Создание активного (умного) прокси

После глубокого поиска в интернете я обнаружил, что сервак Smiley HTTP Proxy Servlet подходит для обработки запросов прокси. Он маленький и состоит из одного класса. У меня вопрос, могу ли я использовать этот прокси в качестве активного прокси, т.е. Когда перед извлечением целевого хоста мне нужно запустить кусок кода, чтобы вычислить несколько значений. Если это невозможно с этим сервлетом, есть ли у них какое-либо иное решение проблемы?

1 ответ

HTTP-сервлет Smiley Proxy описывается как легко расширяемый, потому что вам просто нужно расширить класс и переопределить методы, которые вы хотите изменить.

Кажется, что этот прокси может работать для вашей ситуации, но это зависит немного больше от вашего варианта использования. Вы хотите запустить некоторый код перед извлечением целевого хоста, что, по-видимому, означает, что #1 ваш целевой хост будет изменен на основе вашего пользовательского кода, или #2 вы просто хотите, чтобы ловушка запускала ваш собственный код до того, как целевой хост был получен, Ниже приведены мои ответы для каждого:

1) Если вы хотите изменить целевой хост (например, targetUriObj как указано в строке 204 метода service() Proxy Servlet.java, вам действительно нужно загрузить исходный код и изменить его напрямую для своих нужд. Вы можете либо отредактировать исходный источник, либо переопределить service() метод и изменить то, что вам нужно.

2) Если вы просто хотите, чтобы ваш код выполнялся, я бы порекомендовал создать расширение Proxy Servlet и переопределить service() метод, вот так:

public class ProxyServletExtension extends ProxyServlet {
    @Override
    protected void service(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws ServletException, IOException {
        // Run your custom code here

        // Call the parent service() method to finish processing
        super.service(servletRequest, servletResponse);
    }
}
Другие вопросы по тегам