我正在尝试与 LUW 上的 DB/2 建立连接并收到“连接重置错误”。我能够使用相同的 JDBC 驱动程序、URL、用户名和密码在 DBeaver 中成功建立连接。我还应该查看或考虑什么? 我没有任何特定的代码。正如堆栈跟踪所示,它失败要么是由于我的配置(更有可能),要么是某种 DB2 问题(不太可能,因为我可以使用 DBEaver 进行连接)
我的网址:
jdbc:db2://db2.mycompany.com:30404/mydb?sslConnection=true
Pom 片段:
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>db2jcc_license_cisuz</artifactId>
<version>10.5.9</version>
</dependency>
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>db2jcc4</artifactId>
<version>10.5.9</version>
</dependency>
com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException: [jcc][t4][2030][11211][4.19.66] A communication error occurred during operations on the connection's underlying socket, socket input stream,
or socket output stream. Error location: Reply.fill() - socketInputStream.read (-1). Message: Connection reset. ERRORCODE=-4499, SQLSTATE=08001
at com.ibm.db2.jcc.am.kd.a(kd.java:328)
at com.ibm.db2.jcc.t4.a.a(a.java:531)
at com.ibm.db2.jcc.t4.a.a(a.java:515)
at com.ibm.db2.jcc.t4.a.a(a.java:510)
at com.ibm.db2.jcc.t4.a.b(a.java:1606)
at com.ibm.db2.jcc.t4.a.a(a.java:1626)
at com.ibm.db2.jcc.t4.y.b(y.java:261)
at com.ibm.db2.jcc.t4.y.c(y.java:326)
at com.ibm.db2.jcc.t4.y.c(y.java:439)
at com.ibm.db2.jcc.t4.y.v(y.java:1207)
at com.ibm.db2.jcc.t4.z.a(z.java:53)
at com.ibm.db2.jcc.t4.b.c(b.java:1381)
at com.ibm.db2.jcc.t4.b.b(b.java:1253)
at com.ibm.db2.jcc.t4.b.b(b.java:810)
at com.ibm.db2.jcc.t4.b.a(b.java:781)
at com.ibm.db2.jcc.t4.b.a(b.java:424)
at com.ibm.db2.jcc.t4.b.a(b.java:397)
at com.ibm.db2.jcc.t4.b.<init>(b.java:335)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:234)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:200)
at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:471)
at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:112)
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
at org.flywaydb.core.internal.jdbc.JdbcUtils.openConnection(JdbcUtils.java:56)
at org.flywaydb.core.internal.database.DatabaseFactory.createDatabase(DatabaseFactory.java:72)
at org.flywaydb.core.Flyway.execute(Flyway.java:1670)
at org.flywaydb.core.Flyway.migrate(Flyway.java:1356)
at org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet(FlywayMigrationInitializer.java:65)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1837)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1774)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:307)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1105)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:742)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:389)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:311)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1213)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1202)
at com.mycompany.cost.rules.CostRulesServiceApplication.main(CostRulesServiceApplication.java:13)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at com.ibm.db2.jcc.t4.y.b(y.java:215)
... 47 more
成本规则应用
import javax.annotation.PostConstruct;
import java.util.TimeZone;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CostRulesServiceApplication {
public static void main(String[] args) {
SpringApplication.run(CostRulesServiceApplication.class, args);
}
@PostConstruct
public void init(){
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
}
application.properties
cost.rules.schema=COST_RULES
file.generator.schema=FILE_GENERATOR
logging.level.org.flywaydb.core.internal.database=DEBUG
server.port=${SERVER_PORT:8080}
spring.application.name=bluecost-rules-service
spring.batch.job.enabled=false
spring.datasource.driver-class-name=${COST_DATASOURCE_DRIVER}
spring.datasource.password=${COST_DATASOURCE_PASSWORD}
spring.datasource.url=${COST_DATASOURCE_URL}
spring.datasource.username=${COST_DATASOURCE_USERNAME}
spring.flyway.baseline-on-migrate=false
spring.flyway.enabled=true
spring.flyway.locations=classpath:db/migration
spring.flyway.out-of-order=true
spring.flyway.schemas=${cost.rules.schema}
spring.jpa.database-platform=DB2
spring.jpa.properties.hibernate.default_schema=${cost.rules.schema}
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DB2Dialect
spring.profiles.active=sprint-vault-services-available
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=35MB
spring.servlet.multipart.max-request-size=35MB
sprint.vault.services.db.bms=TestBMS
sprint.vault.services.db.db2onc=db2oncLocal
sprint.vault.services.db.file-generator=LocalFileGenerator
sprint.vault.services.error-delay=1000
sprint.vault.services.job123=TestJob123
sprint.vault.services.job4=TestJob4
sprint.vault.services.jwtSecret=
sprint.vault.services.max-error-threshold=3
sprint.vault.services.token=
sprint.vault.services.url=
答案 0 :(得分:0)
错误的网址。
如果要指定某些属性,必须在数据库名称后使用:
而不是?
,并且每个属性设置后必须跟;
,包括最后一个。< /p>
URL format for IBM Data Server Driver for JDBC and SQLJ type 4 connectivity