gpt4 book ai didi

java - 在 Glassfish 中创建可移植 JDBC 连接池

转载 作者:行者123 更新时间:2023-12-01 21:08:24 25 4
gpt4 key购买 nike

我正在尝试使用 Docker 和预配置的 Glassfish 将我的项目部署到 AWS Elastic Beanstalk。

由于该项目使用JPA和EJB来创建事务持久性单元;我在 Glassfish 管理控制台中创建一个数据库连接池,然后将 JNDI 字符串提供给 persistence.xml

在我的本地计算机上一切正常,亚马逊不允许您使用管理控制台。我读过this这篇文章一般性地讨论了如何使用 asadmin 配置 Glassfish,但我发现它很难理解,而且听起来很有侵略性。

是否有一种通用的解决方案来创建一个数据库连接池,该连接池会自动分配到我将应用程序部署到的任何服务器上?

最佳答案

是的。尽管不幸的是这没有得到充分记录。

您可以创建一个应用程序范围连接池,当您将 war 文件部署到 Glassfish 时,它会动态创建。取消部署时它将销毁它。不过,它仅适用于服务器上的应用程序。

这是你应该做的。创建一个名为 glassfish-resources.xml 的文件,如下所示(对于 MySql):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
<jdbc-connection-pool datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" name="MySQLPool" res-type="javax.sql.DataSource">
<property name="user" value="someUser"></property>
<property name="password" value="aPassword"></property>
<property name="databaseName" value="aDatabase"></property>
<property name="serverName" value="some.string.you got.from.amazon.rds.amazonaws.com"></property>
<property name="portNumber" value="3306"></property>
</jdbc-connection-pool>
<jdbc-resource pool-name="MySQLPool" jndi-name="jdbc/MySQLPool"></jdbc-resource>
</resources>

并将其放入您的WEB-INF 目录中。您还应该将数据库连接依赖项 jar 放在 lib 目录中。

现在,由于这不是全局 JNDI 引用,因为它仅适用于此应用程序,因此您应该在带有 java:app 前缀的 persistence.xml 中访问它,像这样:

<jta-data-source>java:app/jdbc/MySQLPool</jta-data-source>

关于java - 在 Glassfish 中创建可移植 JDBC 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41860052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com