【问题标题】:How to configure a Mysql datasource in a Cloudbees Java EE6 application?如何在 Cloudbees Java EE6 应用程序中配置 Mysql 数据源?
【发布时间】:2012-10-25 16:54:10
【问题描述】:

我正在尝试在 Cloudbees Paas 上部署现有的 Jboss 7 战争应用程序,但我遇到了数据源配置问题。在这个专用的Cloudbees wiki entryrelated thread 之后,我在应用程序启动期间最终出现以下错误(线程中的其他人已经提到过):

javax.resource.ResourceException: Wrong driver class [class com.mysql.jdbc.Driver] for this connection URL [jdbc:cloudbees://cbdebate--1]

我的配置文件如下:

cloudbees-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<cloudbees-web-app xmlns="http://www.cloudbees.com/xml/webapp/1">
 <!-- Application ID (formatted CB_ACCOUNT/APPNAME) -->
 <appid>hck/debate</appid>

 <!-- DataSources (use names refererenced via <resource-ref> in WEB-INF/web.xml) -->
    <resource name="jdbc/debate" auth="Container" type="javax.sql.DataSource">
        <param name="username" value="myuser" />
        <param name="password" value="mypassword" />
        <param name="url" value="jdbc:cloudbees://cbdebate--1" />

        <!-- Connection Pool settings -->
        <param name="maxActive" value="20" />
        <param name="maxIdle" value="2" />
        <param name="maxWait" value="10000" />
        <param name="validationQuery" value="SELECT 1" />
    </resource>
</cloudbees-web-app>

web.xml(相关部分)

(...)
<resource-ref>
    <res-ref-name>jdbc/debate</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
(...)

persistence.xml(相关部分)

        <persistence-unit name="debate" transaction-type="JTA">
            <provider>org.hibernate.ejb.HibernatePersistence</provider>
            <jta-data-source>java:/jdbc/debate</jta-data-source>

(... entity classes declaration ...)

        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <property name="hibernate.max_fetch_depth" value="5"/>
            <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
            <property name="org.hibernate.worker.batch_size" value="1000" />
        </properties>
        </persistence-unit>

提前感谢您的帮助

环境:Jboss 7,JPA 2.0

【问题讨论】:

    标签: mysql java-ee-6 cloudbees


    【解决方案1】:

    感谢 Nicolas 的回答和进一步的谷歌搜索,我设法让它工作。据我了解,您不能在 Jboss 应用程序中使用 cloudbees 驱动程序com.cloudbees.jdbc.Driver(特别是在我们的 Cloudbees Java EE 6 服务器上),而必须使用 mysql 驱动程序 com.mysql.jdbc.Driver
    正如 Nicolas 所说,jdbc:cloudbees://[databaseName] 数据库 URL 按照惯例使用 cloudbees 驱动程序。您需要使用引用实际数据库的url(您可以在cloudbees数据库配置页面中找到它),格式为:

    jdbc:mysql://ec2-AAA-BBB-CCC-DDD.compute-1.amazonaws.com:3306/[databaseName]
    

    这里的重点是 jdbc:mysql://...

    使用上面的表格更改cloudbees-web.xml中数据库的url,它就可以工作了!

    也许 cloudbees 的人可以在这一点上使文档更清晰

    【讨论】:

    • 它尝试了同样的方法并且成功了。但我想知道在哪里可以获得 com.cloudbees.jdbc.Drive Jar。我用谷歌搜索了它,但我找不到它。
    【解决方案2】:

    要使用 jdbc:cloudbees:* JDBC URL,您需要使用 com.cloudbees.jdbc.Driver 作为驱动程序类名。

    按照惯例,在 JVM 上注册的每个 jdbc 驱动程序在它自己的特定 url 信息之前使用一个前缀,因此 jdbc URL 是“jdbc::”

    【讨论】:

    • 非常感谢您的回答。我想尝试您的解决方案,但我不确定代码中的哪个位置(或通过 cloudbees sdk)我需要指定对驱动程序类的引用。在我现有的代码中,我没有在任何地方指定 jdbc 驱动程序类名。我尝试将&lt;property name="javax.persistence.jdbc.driver" value="com.cloudbees.jdbc.Driver"/&gt; 添加到我在persistence.xml 中的pu 声明中,但它似乎什么也没做......
    • 还尝试在 cloudbees-web.xml 中引用驱动程序类名称:&lt;param name="driver" value="com.cloudbees.jdbc.Driver" /&gt;,或者 &lt;param name="driverClassName" value="com.cloudbees.jdbc.Driver" /&gt; 没有成功(相同的错误消息)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 2013-07-25
    • 2019-03-18
    • 2016-01-02
    相关资源
    最近更新 更多