Java EE,通过路径区分上下文

Java EE, differentiate context by path

我正在解决这个问题,glassfish 不支持虚拟主机的个人证书。

我的应用程序应该 运行 上下文依赖于哪个客户想要访问他的数据。我实际上想为此使用单独的域,但由于这是不可能的,所以我想出了一个不同的想法:

我想通过客户进入的路径来区分客户。 例如: www.application.com/customer1/pages/page.jsf 或 www.application.com/customer2/pages/page.jsf

但我不知道如何实现。据我所知,这些地址表示网络服务器上的路径。我能以某种方式做到这一点,应用程序仍然可以找到页面吗?

我最好将这些条目(customer1 和 customer2)存储在一个外部文件中,这样我就可以添加一个新条目而无需触摸代码。

我假设您指的是 SSL 证书。我会考虑设置一个反向代理来处理多个域及其 SSL 加密,并将请求转发到 Glassfish 上的普通 HTTP。

在应用程序本身中,可以通过客户使用的登录名来区分客户 (roles/groups, ...)。如果简单地使用路径或域来区分,则可以很容易地访问来自不同客户的安全资源。如果您想获得域信息,只需在代理服务器中向传入的 HTTP 请求添加 header。

至于这种代理的候选人,我可以推荐 NGINX,它很容易设置。您也可以使用 Apache 或许多其他软件来执行此操作。