- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在将 HikariCP 与 Spring 的 JdbcTemplate 集成时遇到错误。我正在使用 Spring 3.2.2、HikariCP 2.3.8 和 sybase jconn4 版本 7.0.0
Spring 配置:
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="dataSourceClassName" value="com.sybase.jdbc4.jdbc.SybDataSource" />
<property name="connectionTestQuery" value="SELECT 1" />
<property name="maximumPoolSize" value="100" />
<property name="idleTimeout" value="60000" />
<property name="jdbcUrl"
value="jdbc:sybase:Tds:${hostname}:${port}/${dbname}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>
<bean id="ds" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="ds" />
</property>
</bean>
每次加载上下文时都会抛出此错误并且无法创建数据源
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ds' defined in class path resource [commons/config/datasourceTest.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.zaxxer.hikari.HikariDataSource]: Constructor threw exception; nested exception is com.zaxxer.hikari.pool.PoolInitializationException: Exception during pool initialization
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:288)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1051)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:955)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:490)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:120)
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)
at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:100)
at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:248)
at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContextInternal(CacheAwareContextLoaderDelegate.java:64)
at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:91)
... 25 more
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.zaxxer.hikari.HikariDataSource]: Constructor threw exception; nested exception is com.zaxxer.hikari.pool.PoolInitializationException: Exception during pool initialization
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:121)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:280)
... 42 more
Caused by: com.zaxxer.hikari.pool.PoolInitializationException: Exception during pool initialization
at com.zaxxer.hikari.pool.BaseHikariPool.initializeConnections(BaseHikariPool.java:544)
at com.zaxxer.hikari.pool.BaseHikariPool.<init>(BaseHikariPool.java:171)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:60)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:48)
at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:80)
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.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)
... 44 more
Caused by: java.sql.SQLException: JZ0PN: Specified port number of -1 was out of range. Port numbers must meet the following conditions: 0 <= portNumber <= 65535
at com.sybase.jdbc4.jdbc.SybConnection.getAllExceptions(Unknown Source)
at com.sybase.jdbc4.jdbc.SybConnection.handleSQLE(Unknown Source)
at com.sybase.jdbc4.jdbc.SybConnection.a(Unknown Source)
at com.sybase.jdbc4.jdbc.SybConnection.handleHAFailover(Unknown Source)
at com.sybase.jdbc4.jdbc.SybConnection.<init>(Unknown Source)
at com.sybase.jdbc4.jdbc.SybDriver.createConnection(Unknown Source)
at com.sybase.jdbc4.jdbc.SybDriver.connect(Unknown Source)
at com.sybase.jdbc4.jdbc.SybDriver.connect(Unknown Source)
at com.sybase.jdbc4.jdbc.SybDataSource.getConnection(Unknown Source)
at com.zaxxer.hikari.pool.BaseHikariPool.addConnection(BaseHikariPool.java:438)
at com.zaxxer.hikari.pool.BaseHikariPool.initializeConnections(BaseHikariPool.java:542)
... 53 more
现在有趣的是,如果我用简单的代码做到这一点,它就能完美地工作。
public class JdbcTemplateFactoryTest {
@Autowired
HikariConfig hikariConfig;
//@Autowired
//HikariDataSource ds;
@Test
public void hikaritest(){
HikariDataSource ds = new HikariDataSource(hikariConfig);
JdbcTemplate jdbcTemplate = new JdbcTemplate(ds);
assertNotNull(jdbcTemplate);
}
}
奇怪的是,如果我取消注释 ds 以通过 Spring 加载)它会失败。
在这上面花了一整天。任何建议表示赞赏
最佳答案
dataSourceClassName
和 jdbcUrl
属性是互斥的 (see the doc)。您有两个选择...
1) 使用dataSourceClassName
:
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="dataSourceClassName" value="com.sybase.jdbc4.jdbc.SybDataSource" />
<property name="connectionTestQuery" value="SELECT 1" />
<property name="maximumPoolSize" value="100" />
<property name="idleTimeout" value="60000" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<property name="dataSourceProperties">
<props>
<property name="serverName" value="${hostname}" />
<property name="port" value="${port}" />
<property name="databaseName" value="${dbname}" />
</props>
</property>
</bean>
-或-
2) 使用jdbcUrl
:
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="jdbcUrl"
value="jdbc:sybase:Tds:${hostname}:${port}/${dbname}" />
<property name="connectionTestQuery" value="SELECT 1" />
<property name="maximumPoolSize" value="100" />
<property name="idleTimeout" value="60000" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>
如果您的驱动程序不自行注册,您可能需要将 driverClassName
属性添加到选项 #2。
更新:如果您可以阅读捷克语,则可以在此处阅读相同的错误 http://blog.prodejna.biz/2013/03/glassfish-jms-broker-perzistujici.html .基本上,不要使用 SyDataSource
,仅使用基于 jdbcUrl
的方法(如果需要,也可能使用 driverClassName
)。
关于java - 使用 com.zaxxer.hikari.HikariDataSource 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31026545/
到目前为止,我整个周末都在尝试为 HikariCP 配置记录器,现在我正在寻求帮助。我无法准确列出我已经尝试过的内容,因为我经历了我能找到的所有事情,但这里有两个我迄今为止发现的最有希望的事情。 第一
我在将 HikariCP 与 Spring 的 JdbcTemplate 集成时遇到错误。我正在使用 Spring 3.2.2、HikariCP 2.3.8 和 sybase jconn4 版本 7.
我已经添加了 ojdbc ddriver 并将依赖项包含在 pom 中,但我仍然收到标题中提到的错误。请帮忙。 之前我使用本地 postgres 数据库运行了该应用程序。现在尝试连接远程oracle
我正在尝试运行无法访问 H2 数据库的 Spring Boot 应用程序 spring.datasource.initialization-mode=embedded spring.da
我正在使用 JEE 8.0 做简单的 Web 项目(没有 Maven)我正在使用 IntelliJ Ultimate 2019.2.2。尝试导入文件:导入com.zaxxer.hikari.Hikar
我正在做 Spring Security,我正在尝试将我的 API 与数据库连接以获取用户身份验证。我不知道错误。 *************************** APPLICATION FA
我正在尝试使用 Spring Boot(STS) 创建一个 Web 应用程序,但我得到了 通过服务器运行时出现以下错误(JBoss) 12:01:24,091 INFO [stdout] (Serv
我目前有一个连接到我的主数据库的开放池,它运行良好。但是现在,我想为另一个数据库打开一个新池。我完全按照设置第一个池的方式设置了新池,显然我编辑了数据库名称等。加载 setupHikari() 方法时
我该如何解决这个问题?哪个是最好的选择以及如何做到这一点 设置唯一的池名 销毁之前的连接池 org.apache.catalina.core.ApplicationContext.log Initia
我正在升级到 Spring Boot 2.0.1.RELEASE,使用带有 Eclipselink 作为我的提供程序和 Liquibase 的 Spring 数据 JPA。我在尝试启动服务器时遇到以下
我已经在 tomcat-8.5 中部署了我的 spring boot 应用程序。只要部署了一个 war 实例,它就可以正常工作,但是一旦我尝试部署同一 war 文件的下一个版本(我正在尝试在 tomc
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalin
当我尝试运行 Spring Boot 应用程序时出现以下错误。 Description: Failed to bind properties under '' to com.zaxxer.hikari
我使用 Hikari Pool 和 OracleCallableStatement: 我的数据源: 然后我尝试向 Oracle 发出请求:
我开始了解 HikariCP,所以尝试了一下,但在运行时遇到了这个异常。找不到根本原因是什么。任何人都知道如何解决它? 我只是简单地使用 jdbcteplate batchupdate 将 id、na
我是一名优秀的程序员,十分优秀!