2013-12-07 3 views
0

Я пытаюсь обновить проект до Tapestry 5.4, потому что я хочу использовать Bootstrap. В настоящее время он использует myspace-hibernate 5.3.7 с MySQL. Почти все работает. Но когда я пытаюсь использовать Hibernate, он говорит: «Не найдено подходящего драйвера для jdbc: mysql: // localhost: 3306/databaseName».Драйвер не найден для спящего режима с Гобеленом 5.4

Теперь этот вопрос задан раньше, и ответ был «драйвер не находится в пути к классам» или «вы набрали неверный URL». Но я абсолютно, на 100% уверен, что водитель там. Это в военном деле. Вот запись в pom.xml:

 <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.27</version> 
     </dependency> 

И я абсолютно 100% уверен, что я напечатал URL правильно, потому что он работал с Гобелен 5.3.7.

Я также попытался добавить драйвер вручную. Кроме того, я пробовал другие базы данных и получил ту же ошибку. Я вставил трассировку стека ниже. Глядя на источник для java.sql.DriverManager.getConnection, похоже, что он проверяет список драйверов, но список пуст.

[ERROR] hbm2ddl.SchemaUpdate HHH000299: Could not complete schema update 
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/preparedMindDatabase 
    at java.sql.DriverManager.getConnection(DriverManager.java:596) 
    at java.sql.DriverManager.getConnection(DriverManager.java:187) 
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:192) 
    at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51) 
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:194) 
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178) 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:495) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1741) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1779) 
    at org.apache.tapestry5.internal.hibernate.HibernateSessionSourceImpl.<init>(HibernateSessionSourceImpl.java:46) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.apache.tapestry5.ioc.internal.util.ConstructorInvoker.invoke(ConstructorInvoker.java:49) 
    at org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:42) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60) 
    at org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) 
    at org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29) 
    at org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46) 
    at org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63) 
    at org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54) 
    at org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) 
    at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66) 
    at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54) 
    at $HibernateSessionSource_61fa1b0ff12.delegate(Unknown Source) 
    at $HibernateSessionSource_61fa1b0ff12.create(Unknown Source) 
    at org.apache.tapestry5.internal.hibernate.HibernateSessionManagerImpl.<init>(HibernateSessionManagerImpl.java:31) 
    at org.apache.tapestry5.hibernate.modules.HibernateCoreModule.buildHibernateSessionManager(HibernateCoreModule.java:94) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.tapestry5.ioc.internal.util.MethodInvoker.invoke(MethodInvoker.java:51) 
    at org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:42) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:60) 
    at org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:60) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) 
    at org.apache.tapestry5.ioc.internal.services.PerThreadServiceCreator.createObject(PerThreadServiceCreator.java:47) 
    at $HibernateSessionManager_61fa1b0ffd3.delegate(Unknown Source) 
    at $HibernateSessionManager_61fa1b0ffd3.getSession(Unknown Source) 
    at $HibernateSessionManager_61fa1b0ff4e.getSession(Unknown Source) 
    at $Session_61fa1b0ffd2.readProperty(Unknown Source) 
    at $Session_61fa1b0ffd2.createCriteria(Unknown Source) 
    at $Session_61fa1b0fef9.createCriteria(Unknown Source) 
    at com.salsaberries.preparedmind.pages.Register.advised$onSuccess_61fa1b0ffbf(Register.java:57) 
    at com.salsaberries.preparedmind.pages.Register$Invocation_onSuccess_61fa1b0ffbe.proceedToAdvisedMethod(Unknown Source) 
    at org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:84) 
    at org.apache.tapestry5.internal.hibernate.CommitAfterWorker$1.advise(CommitAfterWorker.java:53) 
    at org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86) 
    at com.salsaberries.preparedmind.pages.Register.onSuccess(Register.java) 
    at com.salsaberries.preparedmind.pages.Register.dispatchComponentEvent(Register.java) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:942) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1127) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:62) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1072) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1069) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:145) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1068) 
    at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.triggerContextEvent(InternalComponentResourcesImpl.java:302) 
    at org.apache.tapestry5.corelib.components.Form.onAction(Form.java:526) 
    at org.apache.tapestry5.corelib.components.Form.dispatchComponentEvent(Form.java) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:942) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1127) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:62) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1072) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1069) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:145) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1068) 
    at org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl.handle(ComponentEventRequestHandlerImpl.java:75) 
    at org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42) 
    at $ComponentEventRequestHandler_61fa1b0ffd1.handle(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$37.handle(TapestryModule.java:2202) 
    at $ComponentEventRequestHandler_61fa1b0ffd1.handle(Unknown Source) 
    at $ComponentEventRequestHandler_61fa1b0ff5c.handle(Unknown Source) 
    at org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43) 
    at org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39) 
    at $ComponentRequestHandler_61fa1b0ff5e.handleComponentEvent(Unknown Source) 
    at org.apache.tapestry5.internal.services.RequestOperationTracker$1.perform(RequestOperationTracker.java:55) 
    at org.apache.tapestry5.internal.services.RequestOperationTracker$1.perform(RequestOperationTracker.java:52) 
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:107) 
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:100) 
    at org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1117) 
    at org.apache.tapestry5.internal.services.RequestOperationTracker.handleComponentEvent(RequestOperationTracker.java:47) 
    at $ComponentRequestHandler_61fa1b0ff5e.handleComponentEvent(Unknown Source) 
    at com.salsaberries.preparedmind.filters.HTTPHeaderFilter.handleComponentEvent(HTTPHeaderFilter.java:46) 
    at $ComponentRequestFilter_61fa1b0ff5b.handleComponentEvent(Unknown Source) 
    at $ComponentRequestHandler_61fa1b0ff5e.handleComponentEvent(Unknown Source) 
    at com.salsaberries.preparedmind.filters.SecurityFilter.handleComponentEvent(SecurityFilter.java:62) 
    at $ComponentRequestFilter_61fa1b0ff5a.handleComponentEvent(Unknown Source) 
    at $ComponentRequestHandler_61fa1b0ff5e.handleComponentEvent(Unknown Source) 
    at $ComponentRequestHandler_61fa1b0ff23.handleComponentEvent(Unknown Source) 
    at org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:46) 
    at $Dispatcher_61fa1b0ff26.dispatch(Unknown Source) 
    at $Dispatcher_61fa1b0ff20.dispatch(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:300) 
    at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) 
    at $RequestHandler_61fa1b0ff21.service(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.java:845) 
    at $RequestHandler_61fa1b0ff21.service(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.java:835) 
    at $RequestHandler_61fa1b0ff21.service(Unknown Source) 
    at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89) 
    at $RequestHandler_61fa1b0ff21.service(Unknown Source) 
    at $RequestHandler_61fa1b0ff17.service(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:251) 
    at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59) 
    at $HttpServletRequestHandler_61fa1b0ff19.service(Unknown Source) 
    at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) 
    at $HttpServletRequestFilter_61fa1b0ff14.service(Unknown Source) 
    at $HttpServletRequestHandler_61fa1b0ff19.service(Unknown Source) 
    at org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:795) 
    at $HttpServletRequestHandler_61fa1b0ff19.service(Unknown Source) 
    at $HttpServletRequestHandler_61fa1b0ff13.service(Unknown Source) 
    at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:166) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 

Edit: А вот конфигурация спящего режима:

<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/preparedMindDatabase</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">*******</property> 
    <property name="hbm2ddl.auto">update</property> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hibernate.format_sql">true</property> 
    <property name="hibernate.generate_statistics">true</property> 

</session-factory> 

ответ

-1

Посмотрите на метод java.sql.DriverManager # GetConnection где исключение бросается, кажется, что это одна из двух возможностей:

  1. водитель не зарегистрировался. Современные драйверы автоматически регистрируются при загрузке их класса.

  2. Драйвер зарегистрировался сам, но он не виден загрузчиком классов и поэтому его пропускают.

Я хотел бы предложить, чтобы поставить некоторые точки останова на java.sql.DriverManager # GetConnection и в java.sql.DriverManager # registerDriver, чтобы посмотреть, что происходит.

Странно, почему он работал раньше. Обычно мы должны поместить драйвер в $ TOMCAT_HOME/lib, см. this post. Там он всегда отображается для любой части приложения и предотвращает регистрацию драйверов несколько раз.

Попробуйте удалить драйвер из WAR и убедитесь, что он находится в $ TOMCAT_HOME/lib. Если это не сработает, вы всегда можете отредактировать вопрос с дальнейшими выводами, надеюсь, что это поможет.

+0

Проблема заключалась в том, что Tomcat по-прежнему загружал старый драйвер, когда я обновлялся до нового драйвера, который пытался загрузить его тоже, и это вызывало некоторый конфликт. Поместите драйвер в $ TOMCAT_HOME/lib, как вы предложили, и удалив его из WAR (и очистив папку webapps tomcat), исправил проблему, спасибо! – user3078384

0

Где находятся спящие банки? Возможно, у вас есть странная ситуация, когда спящий режим загружается загрузчиком классов bootstrap, но драйвер загружается загрузчиком классов war.

+0

Это интересно, здесь дело обстоит не так, но при обновлении это может вызвать такую ​​же проблему. – user3078384

Смежные вопросы