【发布时间】:2014-08-26 11:43:35
【问题描述】:
对于你们中的一些人来说,这可能是一个非常简单的问题,尽管我需要帮助来理解在我的 Spring MVC 应用程序之间建立数据库连接的过程,该应用程序目前在 Glassfish 4 和 MySQL 上运行。这样做的步骤是什么?我在下面概述了我的想法,但是我仍然不清楚这个过程。
到目前为止,我已经在 Glassfish 4 管理面板中创建了一个 JDBC 连接池,并使用定义的参数成功连接; ping 返回成功。我现在是否需要创建一个 JNDI 数据源,因为我认为这是连接到数据库连接池所必需的?
如果到目前为止这是正确的步骤;接下来执行哪些步骤?我的假设是需要配置 web.xml 以便它链接到 JNDI 数据源?这是正确的吗?
我们将不胜感激。
[更新]
我已经弄清楚了这一切,现在一切都按预期进行。但是,在此过程中我遇到了一个暗示,我不太明白为什么连接不想在某一时刻起作用。
这是我在 web.xml 中遇到问题的配置:
<resource-ref>
<res-ref-name>jdbc/application</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
我在尝试从我的一张表中提取记录时收到所有类型的错误。错误消息大致如下:
"javax.servlet.jsp.JspException: 无法获取连接,DataSource 无效:“java.sql.SQLException:分配连接时出错。 原因:无法分配连接,因为: java.net.ConnectException:连接到服务器 localhost 时出错 端口 1527"
虽然我找到了解决方案,我将 <mapped-name> 元素包含在 web.xml 中的父 <resource-ref> 元素中
这是我应用更新后文件的样子:
<resource-ref>
<res-ref-name>jdbc/application</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<mapped-name>jdbc/application</mapped-name>
</resource-ref>
<mapped-name> 节点的作用是什么让我能够正确建立此连接?我的假设是找到并将其映射到正确的 JNDI 记录,尽管我认为此映射是由最初定义的 <re-ref-name> 元素执行的。
请指教,对此的解释将不胜感激。
【问题讨论】:
标签: java mysql spring spring-mvc glassfish