在我的春季启动项目中,我有时会丢失与teradata数据库的连接。我想知道如何告诉spring关闭并再次打开连接。
我看了几天的运行时异常,比如
引起:java.sql.SQLException:[Teradata JDBC Driver] [TeraJDBC 16.10.00.03] [错误1095] [SQLState HY000]无法在关闭连接上调用方法 at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDriverJDBCException(ErrorFactory.java:95)〜[terajdbc4-16.10.00.03.jar!/:16.10.00.03] at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDriverJDBCException(ErrorFactory.java:65)〜[terajdbc4-16.10.00.03.jar!/:16.10.00.03] 在com.teradata.jdbc.jdbc_4.TDSession.prepareStatement(TDSession.java:1323)〜[terajdbc4-16.10.00.03.jar!/:16.10.00.03] at com.teradata.jdbc.jdbc_4.TDSession.prepareStatement(TDSession.java:1375)~ [terajdbc4-16.10.00.03.jar!/:16.10.00.03] 在com.teradata.jdbc.jdbc_4.TDSession.prepareStatement(TDSession.java:1361)〜[terajdbc4-16.10.00.03.jar!/:16.10.00.03] at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)〜[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[na:1.8.0_162] 在java.lang.reflect.Method.invoke(Method.java:498)〜[na:1.8.0_162] 在org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)〜[tomcat-jdbc-8.5.20.jar!/:na] 在org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)〜[tomcat-jdbc-8.5.20.jar!/:na] at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:75)〜[tomcat-jdbc-8.5.20.jar!/:na] 在org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)〜[tomcat-jdbc-8.5.20.jar!/:na] 在org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:81)〜[tomcat-jdbc-8.5.20.jar!/:na] 在com.sun.proxy。$ Proxy73.prepareStatement(未知来源)〜[na:na] 在org.springframework.jdbc.core.JdbcTemplate $ SimplePreparedStatementCreator.createPreparedStatement(JdbcTemplate.java:1521)〜[spring-jdbc-4.3.11.RELEASE.jar!/:4.3.11.RELEASE] 在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:627)〜[spring-jdbc-4.3.11.RELEASE.jar!/:4.3.11.RELEASE] ...省略了25个常见帧
尝试访问数据库时。
我在访问数据库时使用自动装配的JdbcTemplate。我可以捕获异常,但我不知道如何告诉spring杀死并重新连接到数据库。
我正在使用以下依赖项。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.teradata.jdbc</groupId>
<artifactId>terajdbc4</artifactId>
<version>16.10.00.03</version>
</dependency>
<dependency>
<groupId>com.teradata.jdbc</groupId>
<artifactId>tdgssconfig</artifactId>
<version>16.10.00.03</version>
</dependency>
在搜索stackoverflow之后,我找到了如何为不同的数据库添加重新连接配置的示例,但不是teradata。我可以使用类似的配置吗?
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
答案 0 :(得分:0)
java.sql.Connection conn;
java.sql.Statement stmt;
try {
stmt = conn.createStatement();
stmt.executeQuery("SELECT USER");
} catch (SQLException e) {
// ... open connection here
}