On 05/06/2014 14:59, Georg Füchsle wrote:
Hallo,

my Application is deployed inside a Firewall and/or behind a Load-Balancer.

My application provies a web-app and an web-service. At some time i have to
call my own web-service from the web-app. In this case I have to use the
internal URL of my server.

At another time I have to give the public URL of my web-app to an interface
to other apps or services. In that caes i have to use the external URL of
my web-app. ( That is the URL of the firewall
or the load balancer)

For example:

The App is deployed internal on the Server with the name webserver1. So the
internal URL would be:

http://webserver1:8080/myapp/

But from outside the office I have to call the Url of the Firewall/Load
balancer:

http::// www.mycompany.com/myapp/



I found a way to read the current URL from the request:

HttpServletRequest request = (HttpServletRequest)
FacesContext.getCurrentInstance().getExternalContext().getRequest();
URL reconstructedURL;
reconstructedURL = new URL(request.getScheme(), request.getServerName(),
request.getServerPort(), "");

But the result is the internal URL, when the User is using the internal URL
and the external URL, when the user is using the external URL.


Is there a possibility to read  the internal server-name and port in any
case?
This is not exactly your question, but I have a similar problem when I have to get the real source address of a forwarded request.

I use this function in this case :

    public static String getRemoteAddr(HttpServletRequest req) {
        String forwardedFor = req.getHeader("X-Forwarded-For");
        if(StringUtils.isNotBlank(forwardedFor)) {
return forwardedFor.split("\\s*,\\s*", 2)[0]; // liste d'adresses de la forme : client, proxy1, proxy2, etc.
        }
        return req.getRemoteAddr();
    }

I guess, but do not have a requyest to your server at hand to check it, that there must be a header in your request that you can analyse in a similar way to get what you are looking for. With forwardedFor.split("\\s*,\\s*", 2)[1] , I guess that you would have your public address.

Hope this helps.

Ludovic
|
| AVANT D'IMPRIMER, PENSEZ A L'ENVIRONNEMENT.
|

Reply via email to