This seems a good strategy to me.
This filter can be used where the combination of the correct Apache reverse proxy config and Tomcat RemoteIpValve is not possible (no Apache reverse proxy, No Apache Tomcat).
The sample configs below can be used with an Apache HTTP Server based reverse proxy and Apache Tomcat as backed server.
The published url for the application is https://www.frontend.org/cmis, the Apache HTTP server handles https termination and it's IP address is 192.168.100.254.
RequestHeader set X-Forwarded-Proto "https"
ProxyPass http: ProxyPassReverse http:</Location>
The ProxyPreserveHost directive will pass the Original Host HTTP header to the proxied host, for this example www.frontend.org, which will be returned by request.getServerName().
tomcat server.xml snippet:
The valve will take care of binding the https scheme to the request.getScheme() and 443 to request.getServerPort()