2016-06-23 9 views
0

私は、c3p0接続プール管理を使用して、tomcat 7.0.57で休止状態のアプリケーションを実行しようとしています。 NoSuchMethodErrorのためにsessionFactoryを構築することはできません。ここでNoSuchMethodError:Hibernate 5.1.0とc3p0を使用するbuildSessionFactory

は私のpom.xmlです:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>5.1.0.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-c3p0</artifactId> 
    <version>5.1.0.Final</version> 
</dependency> 
<dependency> 
    <groupId>com.mchange</groupId> 
    <artifactId>c3p0</artifactId> 
    <version>0.9.5.2</version> 
</dependency> 

私はhibernate.cfg.xml:

<property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property> 
<property name="hibernate.c3p0.min_size">10</property> 
<property name="hibernate.c3p0.max_size">20</property> 
<property name="hibernate.c3p0.acquire_increment">1</property> 
<property name="hibernate.c3p0.idle_test_period">300</property> 
<property name="hibernate.c3p0.max_statements">50</property> 
<property name="hibernate.c3p0.timeout">180</property> 

私はこの例外を取得していTomcatを再起動しています:

java.lang.NoSuchMethodError: org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.extractIsolation(Ljava/util/Map;)Ljava/lang/Integer; 
at org.hibernate.c3p0.internal.C3P0ConnectionProvider.configure(C3P0ConnectionProvider.java:200) 
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) 
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260) 
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94) 
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) 
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843) 
at urlarchiv.db.HibernateUtil.createSessionFactory(HibernateUtil.java:27) 
at urlarchiv.db.UrlManager.<init>(UrlManager.java:18) 
at urlarchiv.reader.XmlReader.readXml(XmlReader.java:99) 
at urlarchiv.reader.XmlReader.readXml(XmlReader.java:80) 
at urlarchiv.servlets.UrlArchivingServlet.init(UrlArchivingServlet.java:118) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5231) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5518) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649) 
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1081) 
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1877) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

ここで例外がスローされます(buildSessionFactory):

public class HibernateUtil { 

private static SessionFactory sessionFactory; 
private static ServiceRegistry serviceRegistry; 

public static SessionFactory createSessionFactory() { 
    Configuration configuration = new Configuration(); 

    try { 
     configuration.configure(); 
    } catch (HibernateException e) { 
     configuration.configure("/META-INF/hibernate.cfg.xml"); 
    } 

    serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
      configuration.getProperties()).build(); 
    sessionFactory = configuration.buildSessionFactory(serviceRegistry); 

    return sessionFactory; 
} 

EDIT:すでに尋ねたKEM同様 私のMavenの依存関係ツリー

[INFO] +- junit:junit:jar:4.12:compile 
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:compile 
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided 
[INFO] +- org.hibernate:hibernate-entitymanager:jar:5.1.0.Final:compile 
[INFO] | +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile 
[INFO] | +- org.hibernate:hibernate-core:jar:5.1.0.Final:compile 
[INFO] | | +- antlr:antlr:jar:2.7.7:compile 
[INFO] | | +- org.jboss:jandex:jar:2.0.0.Final:compile 
[INFO] | | \- com.fasterxml:classmate:jar:1.3.0:compile 
[INFO] | +- dom4j:dom4j:jar:1.6.1:compile 
[INFO] | | \- xml-apis:xml-apis:jar:1.0.b2:compile 
[INFO] | +- org.hibernate.common:hibernate-commons-annotations:jar:5.0.1.Final:compile 
[INFO] | +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile 
[INFO] | +- org.javassist:javassist:jar:3.20.0-GA:compile 
[INFO] | \- org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1.1:compile 
[INFO] +- org.hibernate:hibernate-c3p0:jar:5.1.0.Final:compile 
[INFO] +- com.mchange:c3p0:jar:0.9.5.2:compile 
[INFO] | \- com.mchange:mchange-commons-java:jar:0.2.11:compile 
[INFO] +- commons-io:commons-io:jar:2.4:compile 
+0

Hibernateの以前のバージョン - 特にhibernate-core - がクラスパス上のどこかにありますか?おそらくTomcatのコンテナにプリインストールされていますか? – kem

答えて

1

、本当にまだ以前の休止バージョン(4.3.6。)その例外を発生させたTomcatコンテナに配備さがありました。このバージョンは、同じwebapp内の別のjarファイルで使用されていました。

このjarファイルを同じバージョンに更新すると、問題が解決しました。

関連する問題