Мне нужно написать класс Servlet или Filter, который может получить доступ к объекту org.apache.catalina.connector.Request, который обернут в объект RequestFacade, переданный моему сервлету.Приведение не работает, поскольку RequestFacade не является подклассом Request.
Причина, по которой мне это нужно, заключается в том, что я пытаюсь вызвать метод RequestResettedSessionId (), и это, очевидно, не является частью Http.спецификация сервлетаПричина, по которой мне нужно это сделать, заключается в том, что идентификатор сеанса включается в URL-адрес под другим именем, нежели JSESSIONID.Я не могу изменить URL-адрес или имя параметра, поэтому я пытаюсь связать запрос с правильным сеансом, извлекая идентификатор сеанса и вызывая Request.setRequestedSessionId ().
Я действительно решилпроблема с использованием подкласса Valve, но я не люблю использовать Valve, потому что, насколько я могу судить, мне нужно установить мой подкласс Valve в каталог Tomcat / server / classes вместо упаковки его с остальной частью моего веб-приложения.Если бы существовал переносимый способ сделать это в разных контейнерах сервлетов, это было бы замечательно, но на данный момент я смирился с созданием этого конкретного Tomcat.
Вот рабочий код Valve:
public class SessionSetter extends ValveBase {
public void invoke( Request request, Response response ) throws IOException, ServletException {
String sessionId = request.getParameter( "whatever" );
request.setRequestedSessionId( sessionId );
}
}
Есть ли способ сделать то же самое в сервлете или фильтре?Или есть какой-нибудь способ упаковать класс Valve в мой файл .war приложения?