Насколько я знаю, невозможно изменить значение, возвращаемое ServletRequest.getServerName () или ServletRequest.getLocalAddr () просто с простым изменением конфигурации в сети .xml.
Но вы могли бы написать обертку ServletRequest / HttpServletRequest, которая просто делегирует все вызовы методов исходному запросу, кроме тех, которые вы хотите вернуть нестандартные значения. Чтобы обернуть все запросы, поступающие в ваше приложение, вы можете внедрить Filter , который просто оборачивает входящий запрос, а затем передает оболочку по цепочке фильтров. Фильтр будет настроен в вашем файле web.xml. Все после этого фильтра будет просто прозрачно использовать вашу оболочку и получит пользовательские значения, которые вы указали.
Оболочка может выглядеть так:
public class WrappedRequest implements ServletRequest {
private final ServletRequest original;
private String customServerName;
public WrappedRequest(ServletRequest original) {
this.original = original;
}
// ... delegate all method calls to original
public String getServerName() {
if (this.customServerName != null) {
return this.customServerName;
}
return this.original.getServerName();
}
public void setServerName(String customServerName) {
this.customServerName = customServerName;
}
}
Фильтр:
public class RequestWrapperFilter implements Filter {
private final String serverName;
public void init(FilterConfig filterConfig) {
this.serverName = filterConfig.getInitParameter("serverName");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
WrappedRequest wrapped = new WrappedRequest(request);
wrapper.setServerName(this.serverName);
chain.doFilter(wrapped, response);
}
public void destroy() { }
}