如何将用户映射到不同的数据源

时间:2013-08-29 13:00:21

标签: java-ee jdbc jboss jndi

我在Single Application Server(Jboss 4.2.3)中有2个数据源的JNDI设置。

如何确定哪个用户请求来自哪个数据库连接?如何根据用户请求设置Db连接。我需要为用户提供一次DB连接。 即我想在我的应用程序中使用动态数据源。我使用纯JDBC连接

1 个答案:

答案 0 :(得分:0)

您正在构建多租户应用程序。

  • 因此,您需要在用户和数据源之间进行另一次映射(例如在DB表中)。根据该映射选择数据源。

  • 用户应针对您的应用进行身份验证,以便您可以致电request.getRemoteUser()。用它来查找映射表中的数据源名称。

  • 现在您拥有数据源的名称。数据源绑定在JNDI中,每个数据源都有一个唯一的名称。

在您的应用程序中,您可以按名称查找数据源:

final DataSource ds = (DataSource) ic.lookup("java:/jdbc/x1");
final Connection conn = ds.getConnection();
try {
  // Do something with connection
} finally {
  conn.close();
}

所以在你的情况下,你有两个名字,如java:/jdbc/x1java:/jdbc/x2

您可以在定义数据源的同一位置定义JNDI名称。