连接池在Glassfish中不起作用

时间:2016-01-09 10:45:34

标签: java netbeans glassfish connection-pooling

我正在使用localhost与Netbeans一起运行Glassfish服务器版本4.1。我在2台装有Windows 10的计算机上执行此操作。在一台计算机上,我安装了一个新的,干净的Windows 10版本。在该计算机上,连接池无法正常工作。在另一台计算机上,它在Linux(以前的操作系统)中运行良好。

在Netbeans中,我正在使用glassfis-fesources.xml文件开发在Glassfish服务器上运行的Maven Web应用程序,如下所示:

<resources>
<jdbc-resource 
    enabled="true" 
    jndi-name="jdbc/securityDatasource" 
    object-type="user" 
    pool-name="jdbcRealmPool">
    <description/>
</jdbc-resource>
<jdbc-connection-pool 
    allow-non-component-callers="false" 
    associate-with-thread="false" 
    connection-creation-retry-attempts="0" 
    connection-creation-retry-interval-in-seconds="10" 
    connection-leak-reclaim="false" 
    connection-leak-timeout-in-seconds="0" 
    connection-validation-method="auto-commit" 
    datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource" 
    fail-all-connections="false" idle-timeout-in-seconds="300" 
    is-connection-validation-required="false" 
    is-isolation-level-guaranteed="true" 
    lazy-connection-association="false" 
    lazy-connection-enlistment="false" 
    match-connections="false" 
    max-connection-usage-count="0" 
    max-pool-size="32" 
    max-wait-time-in-millis="60000" 
    name="jdbcRealmPool" 
    non-transactional-connections="false" 
    pool-resize-quantity="2" 
    res-type="javax.sql.ConnectionPoolDataSource" 
    statement-timeout-in-seconds="-1" 
    steady-pool-size="8" 
    validate-atmost-once-period-in-seconds="0" 
    wrap-jdbc-objects="false">
    <property name="User" value="admin_computat"/>
    <property name="Password" value="*****"/>
    <property name="ServerName" value="localhost"/>
    <property name="Port" value="3306" />
    <property name="DatabaseName" value="admin_computat" />
     <property name="Url" value="jdbc:mysql://localhost:3306/admin_computat"/>
</jdbc-connection-pool>

在机器上,使用新的Windows 10安装,我在Glassfish中进行ping测试时出现以下错误。

  

警告:RAR8054:为池[jdbcRealmPool]创建非池化[test]连接时出现异常,在销毁物理连接时出现异常   严重:RestResponse.getResponse()给出失败。 endpoint ='http://localhost:4848/management/domain/resources/ping-connection-pool.json'; attrs ='{id = jdbcRealmPool}'

可以使用相同的属性与Netbeans中的数据库建立连接。

为什么连接池无法正常工作?

编辑: 点击http://localhost:4848/management/domain/resources/ping-connection-pool.json我发现了这条消息。

  

{“message”:“在ping-connection-pool命令模型中找不到poolName,在org.glassfish.connectors.admin.cli.PingConnectionPool.poolName上使用java.lang.String类提交bug \ ninjection失败”, “command”:“ping-connection-pool command”,“exit_code”:“FAILURE”,“extraProperties”:{“methods”:[{“name”:“GET”},{“messageParameters”:{“appname” :{ “acceptableValues”: “”, “默认值”: “”, “可选”: “真”, “类型”: “串”}, “ID”:{ “acceptableValues”: “”, “默认值”:” ”, “可选”: “假”, “类型”: “串”}, “模块名”:{ “acceptableValues”: “”, “默认值”: “”, “可选”: “真”, “类型”: “串”}, “目标名称”:{ “acceptableValues”: “”, “默认值”: “”, “可选”: “真”, “类型”: “串”}}}], “commandLog”:[” ping-connection-pool“]},”children“:[{”message“:”用法:ping-connection-pool [--appname = appname] [--modulename = modulename] pool_name“,”properties“:{} }]}

2 个答案:

答案 0 :(得分:2)

我发现了问题:

配置文件glassfish-resource.xml具有以下设置:

  

数据源-类名=&#34; com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource&#34;

我在

中更改了它
  

数据源-类名=&#34; com.mysql.jdbc.jdbc2.optional.MysqlDataSource&#34;

现在它正在运作。

也许有人可以回答为什么同一个项目不能在一台计算机上工作。

答案 1 :(得分:0)

  

Blockquote也许有人可以回答为什么同一项目不能在一台计算机上运行。

Blockquote

可能是因为第一台计算机已经具有“ MysqlConnectionPoolDataSource”,而第二台计算机却没有。

开个玩笑,JDBC连接池的名称和JDBC资源必须唯一。因此,如果重复一个名称,则会出现错误。