我正在为一个大学项目制作一个小型论坛形式的web服务。web服务提供了一系列方法来访问和修改数据库,然后JSP/servlet将使用该web服务将论坛呈现给用户。
我已经设置了所有的方法,但是我仍然不确定如何正确地设置我的数据库连接。现在,我在web服务类文件中有一个Connection对象,连接是在该类的构造函数中建立的。我在所有方法中一直使用那个connection对象,所以它们都依赖于正在运行的构造函数。我不确定这是不是正确的。
有没有更好的方法来做这件事?一位讲师告诉我,每次有人访问页面时,都会创建web服务的一个实例,对我来说,这听起来是一个昂贵的操作。
编辑:我看了一下连接池和到目前为止我找到的所有东西(包括这需要额外的库。我的库存仅限于Java SE/EE,没有额外的库,所以这是不可能的。
发布于 2012-09-13 19:33:56
这是一个非常糟糕的想法。你不应该有一个共享的Connection对象。它不能像那样扩展,而且它也不是线程安全的。
更好的方法是使用连接池。在需要的时候获取连接,使用它,并在同一方法的作用域中关闭它。
我认为你的朋友被误导了: web服务应该独立于任何页面。它由一个容器管理。它可以是单例对象或池化对象,但您不能为每个页面都创建一个。
发布于 2012-09-13 19:36:33
最好发布一些代码,然而,从简短的解释中,我想到了几个问题:
如果你频繁地执行构造函数,那么你就会创建大量的connections.
发布于 2012-09-13 19:37:21
你不应该在构造函数中创建连接,因为你很可能会有很多不活动的问题,连接状态,io问题,...
我更喜欢使用Apache库中的DataSource,比如BasicDataSource。
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl("jdbc:...");
dataSource.setUser(...);
dataSource.setPassword(...);然后,在web服务的每个方法中,调用dataSource.getConnection()来获取连接。在内部,它使用一个连接池,正如另一个答案所建议的那样。
https://stackoverflow.com/questions/12405200
复制相似问题