2015-05-25 146 views
0

我一直在试图用建立在GlassFish的MySQL数据库连接池,但它不断出现这条消息:GlassFish和MySQL连接池

连接无法分配的原因是:拒绝访问用户“@”本地主机”(使用密码:NO)

这是在GlassFish-resources.xml中的连接网址:

<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表和添加密码,但我使用MySQL的版本5.7.7的'密码'列被删除。

我也使用NetBeans 8.0.2来创建连接池和GlassFish 4.1,我正在使用JSF2.0和PrimeFaces处理Maven项目,服务器启动并正常运行。

另一个奇怪的事情是,GlassFish显示我的项目已经部署,但它说该页面找不到。

回答

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 lookup使用JNDI名来创建一个java.sql.Connection后。

+0

对不起,我没有抄袭这一切,这里的休息: <属性名=“密码”值=“mypasswordgoeshere” />

0

好的, 我通过执行以下步骤解决了部分问题,但我不确定究竟是哪一个做了这个诀窍。

  1. 包括最新的在这里使用mysql-connector-javaX.X.XX-bin.jar:%glassfishinstallfolder%\ GlassFish的\ lib中
  2. 从GlassFish”域管理员控制台再次资源池创建(本地主机:在资源 - > JDBC - > JDBC连接池中使用java.sql.Driver作为资源类型而不是Javax.sql.ConnectionPoolDataSource
  3. 已将3 附加属性添加到我创建的连接池中;密码,用户和URL。这些都是关于服务器,我使用的网址是jdbc:mysql:// localhost:3306/testDB
  4. 在资源 - > JDBC - > JDBC资源中创建一个新的JDBC资源,名为JNDI_testDB,使用我在前面创建的池步。
  5. 添加标签< JTA数据源> JNDI_testDB </JTA数据源>和<属性名= “eclipselink.target数据库” 价值= “MySQL57”/>我的persistence.xml文件。

我还有其他问题,我的项目仍然没有显示在本地主机:8080 /测试,但我会留下的另一个问题。