我正在以大型项目的小型论坛的形式制作网络服务。 Web服务提供了一组访问和修改数据库的方法,然后JSP / servlet将使用该Web服务向用户显示该论坛。
我已经设置了所有方法,但我仍然不确定如何正确设置数据库连接。现在我在Web服务类文件中有一个Connection
对象,并且在类的构造函数中建立连接。我在所有方法中一直使用该连接对象,因此它们都依赖于正在运行的构造函数。我不确定这是对的。
有更好的方法吗?一位教练告诉我,每次有人访问页面时都会创建一个Web服务实例,这听起来对我来说是一项昂贵的操作。
编辑:我看了一下连接池和我到目前为止发现的所有东西(包括这需要额外的库。我只能在没有附加库的情况下存储Java SE / EE,所以这是不可能的。答案 0 :(得分:1)
这是非常坏主意。你不应该有一个共享的Connection
对象。它无法像那样扩展,并且它不是线程安全的。
更好的方法是使用连接池。在需要时获取连接,使用它,并在相同方法的范围内关闭它。
我认为你的朋友被误导:网络服务应该独立,与任何页面分开。它由一个容器管理。它可能是单例或池化对象,但您不会为每个页面创建一个。
答案 1 :(得分:0)
最好发布一些代码,但是从简短的解释中可以想到一些问题:
答案 2 :(得分:0)
你不应该在构造函数中创建连接,因为你很可能会遇到很多关于不活动,连接状态,问题的问题......
我宁愿使用Apache库中的DataSource,例如BasicDataSource
。
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl("jdbc:...");
dataSource.setUser(...);
dataSource.setPassword(...);
然后,在您的Web服务的每个方法中,您调用dataSource.getConnection()
来获取连接。在内部,它使用连接池,如另一个答案所示。