我正在尝试将应用程序从Glassfish 3.1.1.2迁移到Glassfish 4.0。 在此过程中,我想到了访问我们数据库的问题。
在注入jdbc资源时看起来像
@Resource(name = "jdbc/MyDBResource")
private DataSource datasource;
Glassfish(或Java)给了我一个指向Derby JDBC池的DataSource(它被标记为默认的jdbc池)。 我发现这是为了在Glassfish 4上工作我需要包含一个包含jdbc池和jdbc资源定义的glassfish-resource.xml文件。我创建了该文件并将其添加到其中一个项目模块中:
<?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
name="MyDBConnectionPool"
res-type="javax.sql.DataSource"
datasource-classname="com.bla.bla.XYZDataSource"
pool-resize-quantity="3"
max-pool-size="200"
steady-pool-size="0"
statement-timeout-in-seconds="20" >
<property name="serverName" value="db.url.com" />
<property name="user" value="scottTheTiger" />
<property name="password" value="theMightyPassword" />
</jdbc-connection-pool>
<jdbc-resource jndi-name="java:module/jdbc/MyDBResource"
pool-name="MyDBConnectionPool"/>
</resources>
我还将我的代码更改为指向新资源
@Resource(name = "java:module/jdbc/MyDBResource")
private DataSource datasource;
工作正常。
在当前安装(Glassfish 3.1.1.2)中,使用管理控制台定义了连接池。我们有时需要调整连接池设置(大小,生存时间等)并可能刷新池。
我注意到,当我部署应用程序时,我通过xml文件添加的jdbc池和资源不会显示在管理控制台中,asadmin list-reource-refs命令也不会将它们包含在结果中。因此,如果我们需要更改池中的某些内容,有没有办法在不重新部署整个应用程序的情况下执行此操作?