Java 如何从请求中读取WebSEAL服务器地址?

Java 如何从请求中读取WebSEAL服务器地址?,java,jakarta-ee,websphere,junction,webseal,Java,Jakarta Ee,Websphere,Junction,Webseal,我有一个在websphere服务器上运行的java企业应用程序。该应用程序只能通过不同的webseal服务器访问,这些服务器从intranet的不同区域执行负载平衡和身份验证 内部网URL:https://webseal.intra/junction-old/ApplicationROOT VPN-URL:https://webseal.vpn/junction-old/ApplicationROOT 当然,我也可以直接访问应用程序:https://server-old.intra/Appl

我有一个在websphere服务器上运行的java企业应用程序。该应用程序只能通过不同的webseal服务器访问,这些服务器从intranet的不同区域执行负载平衡和身份验证

  • 内部网URL:
    https://webseal.intra/junction-old/ApplicationROOT
  • VPN-URL:
    https://webseal.vpn/junction-old/ApplicationROOT
当然,我也可以直接访问应用程序:
https://server-old.intra/ApplicationROOT

即将发布的应用程序版本将托管在新服务器上。然后,可以通过相同webseal服务器上的新连接访问该应用程序:

  • 内部网URL:
    https://webseal.intra/junction-new/ApplicationROOT
  • VPN-URL:
    https://webseal.vpn/junction-new/ApplicationROOT
当然,还会有一个新的直接url:
https://server-new.intra/ApplicationROOT

现在我想向旧应用程序添加一个信息页面,为用户提供新的URL。此页面应重新指向新版本。由于我们有不同的Webseal,我不会在re方向上硬编码一个url。但是,当我尝试使用
HttpServletRequest#getRequestURL()
读取请求url时,我只获得了直接的服务器地址

是否可以获取webseal地址而不是服务器地址

编辑:

我有一些解决办法,但我不太喜欢。这更像是一种变通办法。目前我正在使用javascript读取webeal的url,然后执行重新定向:

<script type="text/javascript" >
        function redircetToNewUrl() {

            var port = window.location.port;
            if (port.length > 0) {
                port = ':' + port;
            } else {
                port = '';
            }

            var url = 'https://' + window.location.hostname + port + '/junction-new/ApplicationROOT';
            setTimeout(function f() {location.href = url;}, 30000);
        }
    </script>
    <BODY onload="redircetToNewUrl()">

函数redirectToNewUrl(){
var port=window.location.port;
如果(端口长度>0){
端口=':'+端口;
}否则{
端口=“”;
}
var url='https://'+window.location.hostname+port+'/junction new/ApplicationROOT';
setTimeout(函数f(){location.href=url;},30000);
}

它工作得很好,但正如我所说,我不太喜欢它。最好在jsp中使用java创建重定向url。

可以将连接配置为设置请求头,为您提供信息。例如,我的连接传递iv remote address和iv_server_name头,分别包含转发请求的webseal服务器的IP地址和服务器名称。webseal可能可以发送更多的标题,但我没有访问webseal管理员的权限来确认这一点。@Palamino^这可能是一个答案,而不仅仅是一个注释。然后我如何读取此字段?是否是HttpServletRequest#getSession().getAttribute()?@Joko
getHeader()
可以将连接配置为设置请求头,为您提供信息。例如,我的连接传递iv remote address和iv_server_name头,分别包含转发请求的webseal服务器的IP地址和服务器名称。webseal可能可以发送更多的标题,但我没有访问webseal管理员的权限来确认这一点。@Palamino^这可能是一个答案,而不仅仅是一个注释。然后我如何读取此字段?是HttpServletRequest#getSession().getAttribute()?@Joko
getHeader()