我正在用spring boot应用程序连接到一个配置单元数据源。下面是数据源配置
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.io.IOException;
@Configuration
public class HiveDataSourceConfig {
@Value("${hive.url}")
private String url;
@Value("${hive.username}")
private String username;
@Value("${hive.password}")
private String password;
public DataSource getHiveDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl(url);
dataSource.setDriverClassName("org.apache.hive.jdbc.HiveDriver");
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Bean(name = "jdbcTemplate")
public JdbcTemplate getJDBCTemplate() throws IOException {
return new JdbcTemplate(getHiveDataSource());
}
}
这是我连接到的jdbc url
jdbc:hive2http://hpeee.hpc.company。com:8443/;ssl=真;ssltruststore=/users/arun/downloads/truststore.jks;truststorepassword=password123;传输模式=http;httppath=one/默认值/hive
我连接到hive数据库以获取8000多条记录。。连接工作得非常好,有时我会得到以下例外
java.sql.sqlexception:org.apache.thrift.transport.tttransportexception:org.apache.http.nohttpresponseexception
有时我会得到下面的例外
org.apache.hive.service.cli.hivesqlexception:会话句柄无效:
当我在google上搜索这些异常的原因时,我可以看到一些响应,告诉我这是由于配置单元服务器的问题造成的。。。
但是,当我重新启动我的应用程序(连接到hivedb)时,这个失败就消失了,过了一段时间又回来了。
你知道吗?
1条答案
按热度按时间inb24sb21#
@阿伦作为你的评论之一指出,“它的工作非常好。。只有在空闲了一段时间后,我才得到异常“这似乎是我和连接池的问题。由于一段空闲时间后的活动/空闲/超时属性,当新请求进入时,池中没有正确可用的连接对象。
使用springboot,您可以用下面这样一种比上面的示例代码更好的方式使用和池。
在应用程序属性文件中
在java配置文件中
spring boot数据属性文档链接
https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#data-属性
本文提供了spring框架为框架支持的多个连接池定义的属性的详细信息。使用它们作为参照来调整它们。
如我的示例应用程序属性所示,您需要根据需要测试和调整它们。