我一直在尝试使用GlassFish创建一个MySQL连接池,但它一直显示此消息:
无法分配连接,因为:用户''@ localhost'拒绝访问(使用密码:否)
这是glassfish-resources.xml的连接URL:
<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="table" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" 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="connectionPool" non-transactional-connections="true" ping="true" pool-resize-quantity="2" pooling="true" res-type="javax.sql.ConnectionPoolDataSource" statement-cache-size="0" statement-leak-reclaim="false" statement-leak-timeout-in-seconds="0" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="true">
<property name="URL" value="jdbc:mysql://localhost:3306/testDB"/>
<property name="User" value="root"/>
<property name="Password" value="mypasswordgoeshere"/>
我在发布这个问题之前阅读了很多文章,其中许多人建议编辑 mysql.users 表并为 root 添加密码,但我正在使用该版本MySQL的5.7.7,其中删除了“密码”列。
我也使用NetBeans 8.0.2创建连接池,而GlassFish 4.1,我正在使用JSF2.0和PrimeFaces的Maven项目,服务器已启动并正常运行。
另一个奇怪的事情是GlassFish已经显示我的项目已经部署,但它说找不到页面。
答案 0 :(得分:0)
你的glassfish-resources.xml看起来不对。您没有根<jdb-connection-pool>
的结束标记,也有一些属性错误,请尝试以下操作:
<jdbc-connection-pool name="jdbc/test-pool" res-type="javax.sql.DataSource"
datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
pool-resize-quantity="1" max-pool-size="5" steady-pool-size="0"
statement-timeout-in-seconds="60" >
<property name="serverName" value="localhost" />
<property name="portNumber" value="3306" />
<property name="dataBaseName" value="testDB" />
<property name="User" value="root" />
<property name="Password" value="mypasswordgoeshere" />
<property name="connectionAttributes" value=";create=true" />
</jdbc-connection-pool>
<jdbc-resource jndi-name="testDB" pool-name="jdbc/test-pool" enabled="true" />
在此之后,您可以使用jndi-name使用JNDI lookup来创建java.sql.Connection。
答案 1 :(得分:0)
好, 我通过执行以下步骤解决了部分问题,但我不确定究竟是哪一个做了。
我还有其他问题,我的项目仍然没有显示在localhost:8080 / test中,但是我会留下另一个问题。