mysql - JBoss 7.1.1 中的 java.lang.ClassNotFoundException : com. mysql.jdbc.Driver - 出了什么问题?

标签 mysql hibernate jdbc jboss

我有一个应用程序,该应用程序在 context-common.xml 中定义了数据源,并且详细信息是从我的 application.properties 加载的。

我尝试按照 jBoss https://community.jboss.org/wiki/DataSourceConfigurationInAS7 提供的教程进行操作

所以我在这个结构/modules/com/mysql/main/中添加了mysql-connector-java-5.1.22,并添加了一个module.xml。内容如下:

<resources>
    <resource-root path="mysql-connector-java-5.1.22.jar"/>
    <!-- Insert resources here -->
</resources>
<dependencies>
    <module name="javax.api"/>

</dependencies>

在我的standalone.xml中:

<datasources>
<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">

<connection-url>jdbc:mysql://localhost:3306/cab;DB_CLOSE_DELAY=-1</connection-url>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>root</password>
</security>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>

我不明白我应该如何处理 jndi-name?我还需要它吗?我在使用 JBoss 4 时没有使用过它。

此外,这里还有一些堆栈跟踪:

10:00:23,338 WARN  [org.hibernate.util.JDBCExceptionReporter] (MSC service thread 1-2) SQL Error: 0, SQLState: null
10:00:23,342 ERROR [org.hibernate.util.JDBCExceptionReporter] (MSC service thread 1-2) Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
10:00:23,347 WARN  [org.hibernate.cfg.SettingsFactory] (MSC service thread 1-2) Could not obtain connection metadata: org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136) [commons-dbcp-1.2.2.jar:1.2.2]
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880) [commons-dbcp-1.2.2.jar:1.2.2]
    at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:83) [spring-orm-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84) [hibernate-3.2.7.ga.jar:3.2.7.ga]
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2090) [hibernate-3.2.7.ga.jar:3.2.7.ga]
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2086) [hibernate-3.2.7.ga.jar:3.2.7.ga]
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1311) [hibernate-3.2.7.ga.jar:3.2.7.ga]
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) [hibernate-annotations-3.4.0.GA.jar:3.2.7.ga]
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:863) [spring-orm-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:782) [spring-orm-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:188) [spring-orm-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571) [spring-beans-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509) [spring-beans-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) [spring-beans-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) [spring-beans-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) [spring-beans-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) [spring-beans-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) [spring-beans-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) [spring-beans-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:610) [spring-beans-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) [spring-context-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) [spring-context-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) [spring-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) [spring-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) [spring-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
    at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3392) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850) [jbossweb-7.0.13.Final.jar:]
    at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_20]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_20]
    at java.lang.Thread.run(Thread.java:619) [rt.jar:1.6.0_20]
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from [Module "deployment.cab-1.0-SNAPSHOT.war:main" from Service Module Loader]

最佳答案

如果我理解正确的话,您正在使用您的应用程序(DBCP)提供连接池机制。您似乎还自己随 Spring 一起发布 Hibernate。您还提到您正在从属性文件(我猜也是从您的 war 文件)加载连接详细信息。如果这是正确的,那么您不需要对 AS 执行任何操作,您也可以将 MySQL 驱动程序与您的应用程序一起提供。

但真正的问题似乎是为什么你要运送这么多 AS 已经提供的东西。虽然这似乎是 2000 年代中期的默认选择,但现代应用程序不应该捆绑连接池(它由 AS 本身提供)、Hibernate(也由 AS 通过 JPA 提供)或 Spring Bean(大多数情况下)。的功能可以很容易地被 CDI 取代)。

关于mysql - JBoss 7.1.1 中的 java.lang.ClassNotFoundException : com. mysql.jdbc.Driver - 出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20631733/

相关文章:

连接时可能带有空值的 MySQL 查询

java - 通过java swing向数据库插入数据

spring - 没有 "@Column"注释的 JPA 实体类

java - hibernate JAVA |如何在不创建新表的情况下获取 EntityManager 的实例?

java - 使用 JDBC 从 dbms_output.get_lines 获取输出

java - 无法使用 Postgres 存储函数获取 ID - int 类型的值错误

php - 如何将条件附加到 Eloquent 关系查询中?

php - 登录表单安全注意事项

php - 当我通过tinymce在MySql上使用html源代码更新表时没有任何反应

java - 是否可以为多个列创建一个索引? hibernate