gpt4 book ai didi

java - HikariCP - 使用 HikariDataSource 的链接错误

转载 作者:行者123 更新时间:2023-11-29 08:50:23 25 4
gpt4 key购买 nike

当我使用 HikariDataSource 启动 JBOSS AS 6.1 时出现链接错误。如何解决?

我使用 hikariCP 1.3.3:

  <dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>1.3.3</version>
</dependency>

Spring 3.2、JBOSS AS 6.1、Hibernate 3.6.6(与 JBOSS 捆绑)。我删除了 persistence.xml 并使用 LocalContainerEntityManagerFactoryBean 方法以编程方式配置我的 DataSource 来自:http://www.baeldung.com/2011/12/13/the-persistence-layer-with-spring-3-1-and-jpa/

我的DS配置简单:

   @Bean
public DataSource dataSource() {
HikariDataSource ds = new HikariDataSource(); //here i get the linkageError
ds.setMaximumPoolSize(15);
ds.setDataSourceClassName("com.microsoft.sqlserver.jdbc.SQLServerDataSource");
ds.addDataSourceProperty("serverName", "localhost");
ds.addDataSourceProperty("databaseName", "dbtest");
ds.addDataSourceProperty("user", "dbtest");
ds.addDataSourceProperty("password", "dbtest");
ds.setPoolName("springHikariCp");
return ds;
}

堆栈跟踪的结尾是:

Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource com.company.test.PersistenceJPAConfig.dataSource()] threw exception; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:181) [:3.2.0.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:570) [:3.2.0.RELEASE]
... 135 more
Caused by: java.lang.ExceptionInInitializerError
at com.zaxxer.hikari.HikariConfig.<clinit>(HikariConfig.java:77) [:]
at com.company.test.PersistenceJPAConfig.dataSource(PersistenceJPAConfig.java:115) [:]
at com.company.test.PersistenceJPAConfig$$EnhancerByCGLIB$$2cad8762.CGLIB$dataSource$3(<generated>) [:]
at com.company.test.PersistenceJPAConfig$$EnhancerByCGLIB$$2cad8762$$FastClassByCGLIB$$7a8bcfa3.invoke(<generated>) [:]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) [:3.2.0.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:285) [:3.2.0.RELEASE]
at com.company.test.PersistenceJPAConfig$$EnhancerByCGLIB$$2cad8762.dataSource(<generated>) [:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.7.0_11]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [:1.7.0_11]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [:1.7.0_11]
at java.lang.reflect.Method.invoke(Method.java:601) [:1.7.0_11]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:160) [:3.2.0.RELEASE]
... 136 more
Caused by: java.lang.RuntimeException: javassist.CannotCompileException: by java.lang.LinkageError: loader (instance of org/jboss/classloader/spi/base/BaseClassLoader): attempted duplicate class definition for name: "com/zaxxer/hikari/proxy/ProxyFactory"
at com.zaxxer.hikari.proxy.JavassistProxyFactory.<clinit>(JavassistProxyFactory.java:58) [:]
... 148 more
Caused by: javassist.CannotCompileException: by java.lang.LinkageError: loader (instance of org/jboss/classloader/spi/base/BaseClassLoader): attempted duplicate class definition for name: "com/zaxxer/hikari/proxy/ProxyFactory"
at javassist.ClassPool.toClass(ClassPool.java:1099) [:6.1.0.Final]
at javassist.CtClass.toClass(CtClass.java:1265) [:6.1.0.Final]
at com.zaxxer.hikari.proxy.JavassistProxyFactory.modifyProxyFactory(JavassistProxyFactory.java:131) [:]
at com.zaxxer.hikari.proxy.JavassistProxyFactory.<clinit>(JavassistProxyFactory.java:54) [:]
... 148 more
Caused by: java.lang.LinkageError: loader (instance of org/jboss/classloader/spi/base/BaseClassLoader): attempted duplicate class definition for name: "com/zaxxer/hikari/proxy/ProxyFactory"
at java.lang.ClassLoader.defineClass1(Native Method) [:1.7.0_11]
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) [:1.7.0_11]
at java.lang.ClassLoader.defineClass(ClassLoader.java:634) [:1.7.0_11]
at sun.reflect.GeneratedMethodAccessor131.invoke(Unknown Source) [:1.7.0_11]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [:1.7.0_11]
at java.lang.reflect.Method.invoke(Method.java:601) [:1.7.0_11]
at javassist.ClassPool.toClass2(ClassPool.java:1112) [:6.1.0.Final]
at javassist.ClassPool.toClass(ClassPool.java:1093) [:6.1.0.Final]
... 151 more

最佳答案

我有两点建议。首先,我建议将 HikariCP 升级到最新版本 1.3.5。

其次,错误似乎与类加载器相关,异常 java.lang.ExceptionInInitializerError 表明 HikariConfig 的静态类初始化以某种方式被执行了两次。这应该只有在有两个类加载器引用同一个 HikariCP jar 时才有可能。确保 HikariCP jar 不位于 JBoss 的全局库目录中,而是位于应用程序的容器库目录中。如果有多个应用程序容器,HikariCP jar 应该单独位于每个容器中。

关于java - HikariCP - 使用 HikariDataSource 的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23014644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com