繁体   English   中英

在Glassfish中创建便携式JDBC连接池

[英]Create Portable JDBC Connection Pool in Glassfish

我正在尝试将Docker与预先配置的Glassfish一起部署到AWS Elastic Beanstalk。

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

在我的本地计算机上,一切都很好,Amazon不允许您使用管理控制台。 我已经阅读了这篇文章, 文章通常讨论如何使用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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM