【问题标题】:Database Application Server connection association数据库应用服务器连接关联
【发布时间】:2013-05-10 13:00:41
【问题描述】:

我有以下想法来调查并找出是否可行。我在 linux 机器上有一个 db2 服务器和两种应用程序服务器,geronimo 和 websphere。我想知道是否可以将 geronimo 或 websphere 连接关联到 db2 代理。 换句话说,我想知道在任何给定时刻,Web 应用程序的哪个用户正在数据库中运行哪个查询。 提前谢谢你,

【问题讨论】:

  • 也许可以使用 JDBC setClientInfo()。我不知道您的服务器会支持什么,但这可能需要研究:pic.dhe.ibm.com/infocenter/db2luw/v9r7/…
  • 另外,在您的 SQL 参考中,查找“CURRENT CLIENT...”

标签: db2 websphere application-server geronimo


【解决方案1】:

您可以创建两个用户,一个用于 Geronimo,一个用于 Websphere,这两个用户都在同一个组中。您将权限授予该组,两个用户将拥有相同的权限。

然后,当您发布“应用程序列表”时,您可以区分 Geronimo 和 Websphere 的连接。

如果要更改应用程序名称,有两种方法,具体取决于 java 连接。

Class.forName

Class.forName("com.ibm.db2.jcc.DB2Driver");
Properties props = new Properties();
props.put("user", "scott");
props.put("password", "tiger");
props.put("clientProgramName", "My Program 1");
Connection conn = DriverManager.getConnection(
"jdbc:db2://localhost:50000/sample", props);

数据源

Connection conn = null;
DB2SimpleDataSource ds = new com.ibm.db2.jcc.DB2SimpleDataSource();
ds.setDriverType(4);
ds.setServerName("localhost");
ds.setPortNumber(50000);
ds.setDatabaseName("sample");
ds.setUser("scott");
ds.setPassword("tiger");
ds.setClientProgramName("My Application 2");
conn = ds.getConnection();

您可以通过检索应用程序服务器名称来动态分配连接名称。

我为此写了一篇博客:http://angocadb2.blogspot.fr/2012/12/nombre-de-la-conexion-java-en-db2-java.html

【讨论】:

  • 我的问题不是区分哪个连接来自哪个服务器。我想找出同一台服务器上的客户端,哪个 db2 代理正在使用它们来执行它们的查询。
  • 我的问题不是区分哪个连接来自哪个服务器。我想找出同一台服务器上的客户端,哪个 db2 代理正在使用它们来执行查询。正如你所提到的,这很容易。在 Application Server 环境中,事情变得更加复杂。
  • 如何区分服务器上的每个客户端?如果可以这样做,请将连接名称更改为该值,然后您可以区分服务器和数据库中的每个客户端。
  • 我们的设置最简单的方法是IP地址,因为每个服务器都在不同的机器上运行。一般来说,这个想法不是同时拥有两个服务器,而是其中任何一个,并且想知道在这两个中的任何一个中是否更容易找到我要查找的内容。
  • 您可以通过 db2 在“应用程序 ID”列中列出应用程序来了解连接的来源,因此关联已经完成,您无需执行任何操作。有时 IP 地址是十六进制格式。
猜你喜欢
  • 1970-01-01
  • 2016-06-30
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
相关资源
最近更新 更多