【发布时间】:2010-07-05 22:58:21
【问题描述】:
我正在开发数据库的 Web 前端。目的是创建一个工具,学生可以使用它来学习 SQL、发出查询和查看结果。在此之前,我一直在使用 CLI。它的主要缺点是 a) 现在的学生更习惯于 GUI; b) 当查询返回一个非常宽的表时,很难阅读,因为它环绕。我的 Web GUI 旨在解决这些缺陷。
我使用 GWT 作为客户端前端和 PostgreSQL 数据库后端。 GWT 通过 Jetty 或 Tomcat 托管的 Java servlet 容器与数据库通信。
使用 GWT RPC 机制来发出简单的查询很容易。不过,我坚持如何处理长期交易。为了让学生更好地理解事务的行为方式,我需要他们能够发出 BEGIN 语句,然后发出一个或多个查询,然后是 COMMIT 或 ROLLBACK。我希望他们手动发出 BEGIN/COMMIT/ROLLBACK 语句,这意味着事务可能会处于活动状态长达几分钟。
(这不是一个高性能的数据库服务器。它是一个教学工具,所以我更看重用户体验而不是速度。)
为了实现这一点,我需要确保通过整个事务,客户端将附加到同一个数据库连接。使用传统(无状态)技术,数据库连接要么是短暂的,要么是池化的。因此,我们永远无法确定是否会在多个查询中使用相同的数据库连接。
恐怕我对 Java servlet 有点陌生,所以我有几个问题。
首先,是否存在用于打开数据库连接并在整个用户会话中使用它的现有机制?
其次,我正在考虑创建一个与 servlet 通信的轻量级服务器进程。服务器进程会将会话 ID 与活动的数据库连接匹配,并将客户端连接到适当的连接。因此,轻量级服务器自己维护数据库连接并一直持续到用户注销——就像 CLI 一样。类似的东西已经存在了吗?
【问题讨论】:
标签: java database gwt servlets rpc