我是Java Web编程的新手,我正在尝试设置基于Jersey的应用程序。
我需要设置数据库连接池,我正在努力寻找一个如何做到的好例子(以最好的方式)。根据我的理解,它应该发生在Servlet的init()方法中。我读了一些关于ServletContextListener的东西,它可以在web.xml中设置,但我不认为我的容器(Glassfish)支持web.xml。
还有一个问题是如果数据库断开连接会发生什么?如果我在init()上建立连接,它只运行一次我应该如何重新连接?
//编辑:我认为我的问题的重要部分是确信Grizzly是我的容器(而不是Glassfish,如下所述)
答案 0 :(得分:1)
您没有在代码中设置连接池。您将使用Glassfish提供的管理控制台进行设置:
http://docs.oracle.com/cd/E18930_01/html/821-2416/ggndx.html#gharo
在获取连接方面,您只需使用CDI将数据源注入代码:
@Resource(name="jdbc/mydatabase")
private DataSource dataSource;
其中name是数据源的JNDI名称。
Java EE 7: http://docs.oracle.com/javaee/7/api/javax/annotation/Resource.html
Java EE 6: http://docs.oracle.com/javaee/6/api/javax/annotation/Resource.html
就连接池管理而言,您不必担心代码中的问题。容器将为您处理所有这些。显然,通过管理控制台,您可以配置其属性。
在查找资源及其历史(Java EE 6之前)方面,您将从Pascal Thivent中找到一个很好的答案: Proper usage of JDBC Connection Pool (Glassfish)
答案 1 :(得分:0)
将其定义为应用程序服务器(即Glassfish)中的数据源,并使用JNDI进行查找。