我正在使用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“:{} }]}
答案 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资源必须唯一。因此,如果重复一个名称,则会出现错误。