JSF перенаправляет с HTTPS на HTTP

У меня есть приложение на тестовом сервере, которое выполняется исключительно через https. Когда я перемещаюсь без перенаправления, он работает отлично:

Пример:

<p:menuitem value="#{msg.customerScreen}" url="/restrict/customer.xhtml" />
<p:menuitem value="#{msg.productScreen}" url="/restrict/product.xhtml" />

Но когда мне нужно перенаправить на другую страницу, он перенаправляет на http вместо https. При использовании через http, он работает отлично:

<p:commandLink ajax="false" action="/commerce/store.xhtml?faces-redirect=true">
    <h:graphicImage library="images/BTN" name="btn_to_shop.gif"/>
</p:commandLink>

В качестве обходного пути я попытался восстановить URL:

<p:commandLink ajax="false" action="#{authorizerBean.getCompleteURL('/commerce/store.xhtml?faces-redirect=true')}">
    <h:graphicImage library="images/BTN" name="btn_to_shop.gif"/>
</p:commandLink>

public String getCompleteURL(String page) {
    try {
        FacesContext ctxt = FacesContext.getCurrentInstance();
        ExternalContext ext = ctxt.getExternalContext();

        URI uri = new URI(ext.getRequestScheme(), null, ext.getRequestServerName(), ext.getRequestServerPort(), ext.getRequestContextPath(), null, null);
        return uri.toASCIIString() + page;
    } catch (URISyntaxException e) {
        throw new FacesException(e);
    }
}

Вызывается метод getCompleteURL, который возвращает корректность URL-адреса, но JSF не перенаправляет на новый URL-адрес.

JBoss получает HTTP-соединение. Кто управляет HTTPS - это Apache, который перенаправляет на JBoss:

<VirtualHost *:443>

    ...

    ProxyPass / http://server:8080/
    ProxyPassReverse / http://server:8080/
</VirtualHost>

Я бы предпочел решить эту проблему без использования getCompleteURL, но если это невозможно, пожалуйста, помогите мне с другими подходами.

Ответы на вопрос(1)

Ваш ответ на вопрос