我们正在使用 WLS 服务器,我们在其上配置数据源 (DS) 和托管服务器。
出于故障转移的原因,我们的主应用程序被部署在两个独立的托管服务器上(我们称它们为app_1和app_2)——但是这两个服务器都使用相同的数据源。
数据源是 Oracle DB 的 JDBC 数据源。
+-----------------------------+
| WLS Domain |
|-----------------------------|
|+------------+ +------------+|
|| | | ||
|| app_1 | | app_2 ||
|| | | ||
|+-----|------+ +-----|------+|
|+-----v--------------v------+|
|| Data Source ||
|+-------------|-------------+|
+--------------|--------------+
|
+-----V-----+
| | session1, session2, session3, ...
| ORACLE DB |
| | ~is session1 from app_1 or app_2?
+-----------+
现在我们的问题:
- 我们希望能够在数据库端识别某个数据库会话源自哪个托管服务器(即app_1或app_2)。
问题是:
由于两个托管服务器都访问相同的数据源,因此在数据库上打开的数据库会话(到目前为止)无法区分。这是一个可以解决的问题吗?还是 WLS 托管服务器使用域配置数据源的方式只是设置为使托管服务器对数据库后端完全不可见?
我们已经尝试使用“init SQL”机制将会话元信息添加到 Oracle DB 会话。但是由于数据源是以与服务器无关的方式设置的,因此 init SQL 不能包含有关最终将使用它的托管服务器的任何信息。