我有以下exeption试图连接到数据库HikariPool-1 - Driver does not support get/set network timeout for connections. (Receiver class com.ibm.as400.access.AS400JDBCConnectionImpl does not define or inherit an implementation of the resolved method abstract setNetworkTimeout(Ljava/util/concurrent/Executor;I)V of interface java.sql.Connection.)
这是我的pom
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>net.sf.jt400</groupId>
<artifactId>jt400</artifactId>
<version>10.5</version>
</dependency>
</dependencies>
和应用yaml
spring.datasource:
url: jdbc:as400://xxx/xxx
username: xxx
password: xxx
driver-class-name: com.ibm.as400.access.AS400JDBCDriver
hikari.connection-test-query: values 1
spring.jpa:
database-platform: org.hibernate.dialect.DB2400Dialect
hibernate.ddl-auto: none
3条答案
按热度按时间iswrvxsc1#
您使用的是错误的jt 400版本。jar。默认版本使用JDK 4编译。setNetworkTimeout方法需要Executor类,该类直到JDK 1才添加。6.你需要使用java 6/jt 400的版本。jar或java8/jt 400。下载包中的jar文件。
在Maven中,您需要指定jt400_jdk6分类器。
bprjcwpo2#
我已经研究了
AS400JDBCConnectionImpl
和AS400JDBCConnection
没有setNetworkTimeout(Executor executor, int milliseconds)
方法。也许你可以从它创建一个类并定义缺少的函数。我不能测试它,我希望它可以运行。注意:
package
的位置很重要,你应该放在com.ibm.as400.access
中访问基类的构造函数。软件包可以位于您的工作区,如下图。application.yaml
w8f9ii693#
您需要使用jdk 6 -9版本(当前版本为
'net.sf.jt400:jt400-jdk9:11.1'
)另外,你应该像这样使用'thread used=false'选项:
更多详细信息,请参阅驱动程序文档https://jt400.sourceforge.net/doc/com/ibm/as400/access/doc-files/JDBCProperties.html
注意3:只有当“threadused”属性设置为false时,才应该使用套接字超时。默认情况下,JDBC驱动程序将创建一个线程,该线程总是在等待服务器响应的套接字读取时被阻塞,并且连接空闲时间超过套接字超时将丢弃该连接。