我正在尝试在 Cloudbees Paas 上部署现有的 Jboss 7 war 应用程序,但我遇到了数据源配置问题。继此专用 Cloudbees 维基条目相关主题, ,在应用程序启动期间,我最终遇到以下错误(线程中的其他人已经提到过):

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>

网络.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>
(...)

持久性.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

有帮助吗?

解决方案

感谢尼古拉斯的回答和一些进一步的谷歌搜索,我设法让它工作。据我了解,您不能使用 cloudbees 驱动程序 com.cloudbees.jdbc.Driver 从 Jboss 应用程序中(特别是在我们的 Cloudbees Java EE 6 服务器上)并且必须使用 mysql 应用程序 com.mysql.jdbc.Driver.
正如尼古拉斯所说 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 的人可以让文档在这个特定点上更清晰一些

其他提示

要使用jdbc:cloudbees:* jdbc url您需要使用com.cloudbees.jdbc.driver作为驱动程序类名。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top