无法连接到 DB2-LUW 数据库

时间:2021-04-28 03:04:16

标签: jdbc db2 db2-luw

我正在尝试与 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=

1 个答案:

答案 0 :(得分:0)

错误的网址。

如果要指定某些属性,必须在数据库名称后使用:而不是?,并且每个属性设置后必须跟;,包括最后一个。< /p>

URL format for IBM Data Server Driver for JDBC and SQLJ type 4 connectivity