Jboss加载不到数据库驱动问题解决过程记录
2015-03-13 23:27
549 查看
错误日志:
分析原因及解决问题的过程:
1.Caused by: java.lang.ClassNotFoundException:
Could notload requested class : com.mysql.jdbc.Driver
看到这一句时以为是少jar,后来各种尝试,试着把mysql-xxx.jar加载为ejb, 在web中引入mysql-xxx.jar等,都无功而返.
2.再仔细看错误发现是org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:148)
此时感觉是hibernate加载问题,通过org.hibernate.service.classloading.internal.ClassLoaderServiceImpl查找这个类,在项目中没有发现这个类.
通过ClassLoaderServiceImpl搜索发现org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl这个类.我们项目引用的是hibernate-core-4.3.7.Final.jar,在4.2.18.Final以前的的类路径是org.hibernate.service.classloading.internal.ClassLoaderServiceImpl,4.2.18.Final以后的类路径已经改为了org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.
此时感觉是hibernate-core版本冲突造成的问题,所以将hibernate所有版本都换成了4.2.18.Final,仍然报刚才的错误.
再后来干脆去掉对hibernate-core的引用,问题依然没解决.
3.再仔细看报错日志,及时我去掉了对hibernate-core的引用,问题依旧,说明jboss本身用了hibernate-core,通过日志中的org.hibernate.ejb.Ejb3Configuration我们还可以确定jboss自身引用了hibernate-entitymanager.jar.
此时在jboss的环境目录中搜索hibernate的有关jar终于找到了答案,回想起配置mysql和oracle的过程(http://blog.csdn.net/lk_blog/article/details/41774885),原来是这样.
修改D:\a_tools\jboss\jboss-eap-6.3\modules\system\layers\base\org\hibernate\main\module.xml文件,加入配置
<module name="com.mysql"/>终于搞定,这个问题花了我很多时间,把解决问题的过程记录下载吧,加深印象.
<pre name="code" class="plain">22:41:44,320 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 48) MSC000001: Failed to start service jboss.persistenceunit."itoo-exam-systemmanage-dictionary-ear.ear/itoo-exam-api-0.0.1-SNAPSHOT.jar#exam-entity": org.jboss.msc.service.StartException in service jboss.persistenceunit."itoo-exam-systemmanage-dictionary-ear.ear/itoo-exam-api-0.0.1-SNAPSHOT.jar#exam-entity": javax.persistence.PersistenceException: [PersistenceUnit: exam-entity] Unable to build EntityManagerFactory at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:103) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_51] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_51] at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51] at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final-redhat-1.jar:2.1.1.Final-redhat-1] Caused by: javax.persistence.PersistenceException: [PersistenceUnit: exam-entity] Unable to build EntityManagerFactory at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:924) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:76) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:200) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$600(PersistenceUnitServiceImpl.java:57) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:99) ... 4 more Caused by: org.hibernate.service.classloading.spi.ClassLoadingException: Specified JDBC Driver com.mysql.jdbc.Driver could not be loaded at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:111) at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:223) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:89) at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156) at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1825) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1783) at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914) ... 9 more Caused by: org.hibernate.service.classloading.spi.ClassLoadingException: Unable to load class [com.mysql.jdbc.Driver] at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:151) at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106) ... 21 more Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:318) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) [rt.jar:1.7.0_51] at java.lang.ClassLoader.loadClass(ClassLoader.java:358) [rt.jar:1.7.0_51] at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_51] at java.lang.Class.forName(Class.java:270) [rt.jar:1.7.0_51] at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:148) ... 22 more
分析原因及解决问题的过程:
1.Caused by: java.lang.ClassNotFoundException:
Could notload requested class : com.mysql.jdbc.Driver
看到这一句时以为是少jar,后来各种尝试,试着把mysql-xxx.jar加载为ejb, 在web中引入mysql-xxx.jar等,都无功而返.
2.再仔细看错误发现是org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:148)
此时感觉是hibernate加载问题,通过org.hibernate.service.classloading.internal.ClassLoaderServiceImpl查找这个类,在项目中没有发现这个类.
通过ClassLoaderServiceImpl搜索发现org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl这个类.我们项目引用的是hibernate-core-4.3.7.Final.jar,在4.2.18.Final以前的的类路径是org.hibernate.service.classloading.internal.ClassLoaderServiceImpl,4.2.18.Final以后的类路径已经改为了org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.
此时感觉是hibernate-core版本冲突造成的问题,所以将hibernate所有版本都换成了4.2.18.Final,仍然报刚才的错误.
再后来干脆去掉对hibernate-core的引用,问题依然没解决.
3.再仔细看报错日志,及时我去掉了对hibernate-core的引用,问题依旧,说明jboss本身用了hibernate-core,通过日志中的org.hibernate.ejb.Ejb3Configuration我们还可以确定jboss自身引用了hibernate-entitymanager.jar.
此时在jboss的环境目录中搜索hibernate的有关jar终于找到了答案,回想起配置mysql和oracle的过程(http://blog.csdn.net/lk_blog/article/details/41774885),原来是这样.
修改D:\a_tools\jboss\jboss-eap-6.3\modules\system\layers\base\org\hibernate\main\module.xml文件,加入配置
<module name="com.mysql"/>终于搞定,这个问题花了我很多时间,把解决问题的过程记录下载吧,加深印象.
相关文章推荐
- 数据库查询速度极慢【个人工作问题解决过程记录】
- 解决Weblogic 配置连接池加载数据库驱动失败问题
- 在控制器中添加过滤器,解决中文由jsp到action进而到数据库传输过程中出现的乱码问题(Struts)
- 记录:解决2003server装完网卡驱动后只能访问内网问题
- 地税某数据库异常重启和重启后数据库运行缓慢问题的解决过程
- 查询数据库数据连续性问题---存储过程解决
- WinCE6.0流驱动开发的两种方法及驱动加载失败问题解决
- 总结Asp.net中Page加载PostData的具体过程 进而解决"获取动态创建的控件的PostData数据"问题
- 用oralce连接.net客户端出现问题:“数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,”的解决办法
- SQLSERVER 占了500多M内存,原来的程序无法一次查询出50多W数据了,记录下这个问题的解决过程。
- Linux字符设备驱动-globalmem驱动编译加载遇到的问题及解决办法
- 第一个驱动helloworld module加载insmod “Invalid module format ”问题解决
- Oracle9i 安装问题系列1: “提示加载数据库时出错 areas queries...”,完美解决!!!
- Hpunix下jdbc连接数据库问题解决过程
- 地税某数据库异常重启和重启后数据库运行缓慢问题的解决过程
- 显卡驱动未成功引起的系统问题及解决过程
- 从传统数据库访问转向LINQ过程中遇到的一些问题和解决方法
- 解决oracle report 10g 连接不到数据库实例的问题
- 解决问题过程记录: QuickTime初始化失败
- WinCE6.0流驱动开发的两种方法及驱动加载失败问题解决