JSF przekierowuje z HTTPS do HTTP

Mam aplikację na serwerze testowym wykonywaną wyłącznie na https. Gdy nawiguję bez przekierowania, działa idealnie:

Przykład:

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

Ale kiedy muszę przekierować na inną stronę, przekierowuje do http zamiast https. Podczas korzystania z http działa doskonale:

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

Jako obejście próbowałem zrekonstruować adres 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);
    }
}

Metoda getCompleteURL jest wywoływana i zwraca adres URL poprawnie, ale JSF nie przekierowuje do nowego adresu URL.

JBoss odbiera połączenie HTTP. Kto zarządza HTTPS to Apache, który przekierowuje do JBoss:

<VirtualHost *:443>

    ...

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

Wolałbym rozwiązać ten problem bez użycia getCompleteURL, ale jeśli nie jest to możliwe, pomóż mi w innych podejściach.

questionAnswers(1)

yourAnswerToTheQuestion