首页 文章

Glassfish和MySQL连接池

提问于
浏览
0

我一直在尝试使用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添加密码,但我删除了'm using the version 5.7.7 of MySQL where the '密码'列 .

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

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

2 回答

  • 0

    你的glassfish-resources.xml看起来不对 . 你没有root <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-name创建java.sql.Connection .

  • 0

    好吧,我通过执行以下步骤修复了部分问题,但我不确定究竟是哪一个做了伎俩 .

    • 在这里包含最新的mysql-connector-javaX.X.XX-bin.jar:%glassfishinstallfolder%\ glassfish \ lib

    • 使用java.sql.Driver作为资源类型而不是Javax.sql.ConnectionPoolDataSource,从资源 - > JDBC - > JDBC连接池中的glassfish'域管理控制台(localhost:4848 /)再次创建资源池 .

    • 为我创建的连接池添加了3个附加属性;密码,用户和URL . 这些都是关于服务器的,我使用的url是jdbc:mysql:// localhost:3306 / testDB

    • 使用我在上一步中创建的池,在Resources - > JDBC - > JDBC Resources中创建了一个名为JNDI_testDB的新JDBC资源 .

    • 在我的persistence.xml文件中添加了标签<jta-data-source> JNDI_testDB </ jta-data-source>和<property name = "eclipselink.target-database" value = "MySQL57" /> .

    我还有其他问题,我的项目仍然没有显示在localhost:8080 / test但是我会留下另一个问题 .

相关问题