在哪里初始化基于Jersey的应用程序的数据库连接



我是Java web编程的新手,我正在尝试设置基于Jersey的应用程序。

我需要设置数据库连接池,我正在努力寻找如何做到这一点的一个很好的例子(以最好的方式)。根据我的理解,它应该发生在Servlet的init()方法中。我读了一些关于ServletContextListener可以在web.xml中设置,但我不认为我的容器(Glassfish)支持web.xml。

还有一个问题是如果数据库断开连接会发生什么?如果我在init()上建立连接,它只运行一次,我应该如何重新连接?

//编辑:我认为我的问题的很大一部分是被说服灰熊是我的容器(而不是Glassfish,如下所述)

您没有在代码中设置连接池。您将使用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

在连接池管理方面,您不需要在代码中担心它。容器会帮你处理的。显然,通过管理控制台,您可以配置其属性。

你会从Pascal Thivent那里找到一个很好的答案,在这里查找资源和它的历史(Java EE 6之前):正确使用JDBC连接池(Glassfish)

将其定义为应用服务器(即Glassfish)中的数据源,并使用JNDI查找。

最新更新