【问题标题】:Can't connect to MySQL in Java EE/JBoss application无法在 Java EE/JBoss 应用程序中连接到 MySQL
【发布时间】:2012-08-27 19:03:06
【问题描述】:

在部署我的应用时,我遇到了以下错误(我还包含了主观上重要的警告):

03:36:42,113 WARN  [org.jboss.resource.connectionmanager.JBossManagedConnectionPool] Throwable while attempting to get a new connection: null: org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Failed to register driver for: com.mysql.jdbc.Driver; - nested throwable: (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar}))
(...)
Caused by: org.jboss.resource.JBossResourceException: Failed to register driver for: com.mysql.jdbc.Driver; - nested throwable: (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar})
(..)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar}

03:36:42,122 WARN  [org.hibernate.cfg.SettingsFactory] Could not obtain connection to query metadata: org.jboss.util.NestedSQLException: Unable to get managed connection for MP01Local; - nested throwable: (javax.resource.ResourceException: Unable to get managed connection for MP01Local)
(...)
Caused by: javax.resource.ResourceException: Unable to get managed connection for MP01Local
(...)
Caused by: org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Failed to register driver for: com.mysql.jdbc.Driver; - nested throwable: (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar}))
(...)
Caused by: org.jboss.resource.JBossResourceException: Failed to register driver for: com.mysql.jdbc.Driver; - nested throwable: (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar})
(...)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar}

03:36:42,143 WARN  [org.jboss.resource.connectionmanager.JBossManagedConnectionPool] Throwable while attempting to get a new connection: null: org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Failed to register driver for: com.mysql.jdbc.Driver; - nested throwable: (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar}))
(...)
Caused by: org.jboss.resource.JBossResourceException: Failed to register driver for: com.mysql.jdbc.Driver; - nested throwable: (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar})
(...)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar}

03:36:42,147 ERROR [org.hibernate.tool.hbm2ddl.SchemaExport] schema export unsuccessful: org.jboss.util.NestedSQLException: Unable to get managed connection for MP01Local; - nested throwable: (javax.resource.ResourceException: Unable to get managed connection for MP01Local)
(...)
Caused by: javax.resource.ResourceException: Unable to get managed connection for MP01Local
(...)
Caused by: org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (org.jboss.resource.JBossResourceException: Failed to register driver for: com.mysql.jdbc.Driver; - nested throwable: (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar}))
(...)
Caused by: org.jboss.resource.JBossResourceException: Failed to register driver for: com.mysql.jdbc.Driver; - nested throwable: (java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar})
(...)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from BaseClassLoader@66a8c396{vfs:///D:/MobilnyPodroznik/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1345902635716/deploy/MP01.jar}

至于整个控制台输出:http://pastebin.com/de2Br9xL

基本上,似乎我的 JDBC 驱动程序不可见,但我已将 .jar 放在服务器的默认/lib 文件夹和项目的构建路径中,因此我现在一无所知。

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
       version="2.0">
  <persistence-unit name="mp" transaction-type="JTA">
    <jta-data-source>java:/MP01Local</jta-data-source>

           <properties>
       <!--s
       <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
       -->
       <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
       <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
   </properties>
  </persistence-unit>
</persistence>

mysqllocal-ds.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE datasources
    PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">
<datasources>

   <local-tx-datasource>
      <jndi-name>MP01Local</jndi-name>
      <connection-url>jdbc:mysql://localhost:3306/mp</connection-url>
      <driver-class>com.mysql.jdbc.Driver</driver-class>
      <user-name>login</user-name>
      <password>pass</password>
   </local-tx-datasource>

</datasources>

我已将 DS XML 文件放置在 JBoss 服务器的 default/deploy 路径中,并将 mysql-connector-java-5.0.8-bin 放置在 default/lib 中,如 JBoss 手册中所述。

我正在使用

  • Eclipse,内部版本 20120614-1722,
  • JBoss AS 6,
  • mysql-connector-java-5.0.8-bin 驱动程序。
  • 对于 MySQL,mysql --version 打印出“mysql Ver 14.14 Distrib 5.5.25a, for Win32 (X86)”。

我的项目构建路径

  1. jre6
  2. JBoss 6.x 运行时
  3. MySQL JDBC Driver 5.0.8,包括mysql-connector-java-5.0.8-bin.jar [我在数据源浏览器中创建的)

【问题讨论】:

  • 您是否尝试在 Windows 路径中添加 jar 和 xml 文件?

标签: mysql eclipse jpa jboss datasource


【解决方案1】:

好吧,我从头开始重复了所有步骤,作为一个新的早晨男人,它奏效了。仍然不知道为什么,但这里有一些可能已经解决问题的方法。希望这对正在努力部署他的第一个 Java EE + JPA 应用程序的人有所帮助。

这是我遵循的步骤:

  • 从下载mysql-connector-java-5.0.8-bin.jar http://www.mysql.com/downloads/connector/j/5.0.html#downloads
  • 把它放在jboss-6.0.0.Final\server\default\lib
  • 使用数据源资源管理器在 Eclipse 中创建了一个新的连接配置文件(我不知道这是否 步骤甚至是必要的)。在向导中,我还创建了一个新的驱动程序 使用 5.0.8 连接器定义。 ping 成功,我的 从数据源资源管理器中可以看到数据库。
  • 已生成 -ds.xml 文件来自 3) 中提到的 CP,使用 File->New->Other...->JBoss Tools Web->JBoss Datasource (-ds.xml) (使用 AS5 格式)并将其放置在 jboss-6.0.0.Final\server\default\deploy\Mysql_local-ds.xml 以及 项目的 META-INF\Mysql_local-ds.xml (更正:当我把它放在 两个地方同时,我收到错误 [org.jboss.kernel.plugins.dependency.AbstractKernelController] 错误 安装到 Real: (...) 原因:java.lang.IllegalStateException: jboss.jca:name=MP01Datasource2,service=ManagedConnectionFactory 是 已安装。)
  • 我已经添加了 db 的 jar 来构建路径 usign [rmb 在项目]->构建路径->配置构建路径...->添加 库-> 连接驱动程序定义并选择了我已经选择的那个 在 3) 中定义

我还从我的其他测试项目中删除了一些旧的 .jar 部署,这些部署卡在 workspace.metadata.plugins\org.jboss.ide.eclipse.as.core\JBoss_6.x_Runtime_Server1345902635716\deploy 文件夹中(可能是由于不正确的关机),但我真诚地怀疑这是否有帮助。

我想主要原因可能是因为我正在交换驱动程序和驱动程序定义(我一直在从 5.1.sth 移动到 5.0.8)我也忘记在 pj 的构建路径中交换它们并且不由自主地离开了旧的。

我当前的 persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
       version="2.0">
  <persistence-unit name="mp" transaction-type="JTA">
    <jta-data-source>java:/MP01Datasource2</jta-data-source>
           <properties>
       <!--s
       <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
       -->
       <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
       <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
   </properties>
  </persistence-unit>
</persistence>

Mysql_local-ds.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE datasources
    PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">
<datasources>

   <local-tx-datasource>
      <jndi-name>MP01Datasource2</jndi-name>
      <use-java-context>true</use-java-context>
      <connection-url>jdbc:mysql://localhost:3306/mp</connection-url>
      <driver-class>com.mysql.jdbc.Driver</driver-class>
      <user-name>x</user-name>
      <password>y</password>
   </local-tx-datasource>

</datasources>

【讨论】:

    【解决方案2】:

    JDBC 驱动程序必须放在应用服务器的CLASSPATH 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-08
      • 2016-03-30
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      相关资源
      最近更新 更多