jetty服务器java.sql.SQLException: Already closed处理

本文详细介绍了在Jetty中如何配置数据源以确保数据库连接的有效性,包括连接池的测试配置、验证查询及参数设置等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在jetty的数据源配置中添加如下配置
<Set name="testOnBorrow" type="boolean">true</Set>
<Set name="testOnReturn" type="boolean">true</Set>
<Set name="testWhileIdle" type="boolean">true</Set>
<Set name="validationQuery" type="String">select 1 from dual</Set>

分别是添加了连接池取出,返回,和空闲时是否测试连接的有效性。
其中validationQuery的测试连接有效性的sql配置需要根据数据库进行调整。
最终配置如下:
<New id="ds_my" class="org.apache.commons.dbcp.BasicDataSource">
	<Set name="driverClassName">oracle.jdbc.driver.OracleDriver</Set>
	<Set name="url">jdbc:oracle:thin:@10.0.20.80:1521:dev</Set>
	<Set name="username">ccic</Set>
	<Set name="password">ccic</Set>
	<Set name="maxActive" type="int">100</Set>
	<Set name="maxIdle" type="int">30</Set>
	<Set name="maxWait" type="int">1000</Set>
	<Set name="defaultAutoCommit" type="boolean">true</Set>
	<Set name="removeAbandoned" type="boolean">true</Set>
	<Set name="removeAbandonedTimeout" type="int">60</Set>
	<Set name="logAbandoned" type="boolean">true</Set>
	<Set name="testOnBorrow" type="boolean">true</Set>
        <Set name="testOnReturn" type="boolean">true</Set>
        <Set name="testWhileIdle" type="boolean">true</Set>
        <Set name="validationQuery" type="String">select 1 from dual</Set>
</New>
### 解决 Java 中连接 Apache Hive 出现 `java.sql.SQLException` 和 `HiveDriver` 问题 当遇到 `java.sql.SQLException` 或者无法加载 `HiveDriver` 的情况时,通常是因为以下几个原因: #### 1. 连接拒绝 (Connection Refused) 如果收到类似于 `Could not open client transport with JDBC Uri: jdbc:hive2://host:port/default: java.net.ConnectException: Connection refused: connect` 错误消息,则表明客户端尝试通过指定 URI 建立到服务器的传输失败[^1]。 为了处理这种情况,请确认以下几点: - 确认目标主机 IP 地址和端口号无误。 - 检查防火墙设置允许来自应用程序所在机器的数据流进入 Hive 所在的服务节点。 - 使用命令行工具测试网络连通性和服务可用性,比如 telnet 或 nc(Netcat),确保可以成功建立 TCP 连接至给定地址/端口组合。 #### 2. 缺少合适的驱动程序 (No Suitable Driver Found) 对于提示找不到合适驱动器的情况 (`No suitable driver`) ,这可能是由于缺少必要的 JAR 文件或路径配置不当引起的问题[^2]。 解决方案包括但不限于: - 将正确的 hive-jdbc jar 添加到项目的 classpath 下; - 如果使用 Maven 构建项目,在 pom.xml 文件里声明相应依赖关系并执行 mvn install 更新本地仓库缓存; ```xml <dependencies> <!-- 其他依赖 --> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>${hive.version}</version> </dependency> <!-- 更多依赖 --> </dependencies> ``` - 对于某些特定版本之间的兼容性差异,可能还需要调整所使用的 HiveJDBC 版本号来匹配集群环境中的实际部署状况。 #### 3. 方法不受支持 (Method Not Supported) 针对 Druid 数据源报告的方法未实现异常(`Method not supported`),可以通过修改 POM 来移除不必要的 Jetty 组件引入从而解决问题[^3]: ```xml <!-- 移除 jetty 相关组件 --> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>${hive.version}</version> <exclusions> <exclusion> <groupId>org.eclipse.jetty.aggregate</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> ``` 此外,还需注意检查其他潜在因素可能导致此错误的发生,例如 Hadoop/Hive 安全认证机制、Kerberos 设置等高级特性的影响。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值