Docker容器中的JDBC Oracle:拒绝连接

时间:2018-03-16 21:35:05

标签: oracle docker jdbc

我正在尝试Dockerize Spring MVC应用程序,但无法从容器内连接到我的Oracle数据库。该应用程序使用连接池。使用ojdbc6_g.jar时出现以下错误:

java.net.ConnectException: Connection refused
    java.net.PlainSocketImpl.socketConnect(Native Method)
    ...

我的Dockerfile看起来像:

FROM tomcat:9
ENV JAVA_OPTS=-Duser.timezone=MST
ADD target/app.war /usr/local/tomcat/webapps

Spring Bean看起来像这样:

<bean class="org.apache.commons.dbcp2.BasicDataSource" name="ds">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:jack/sparrow@HOST:PORT/service" />
</bean>

有趣的是,如果我将用户名/密码更改为我知道不正确的内容,则错误会从&#34; Connection refused&#34;我期望的是:&#34;凭证无效&#34;。我使用SpringMVC:4.1.1与JdbcTemplate。为了解决问题,我尝试了以下简化代码:

import java.sql.*;

class TestOJDBC {
  public static void main(String[] args) throws Exception {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:EXACT_SAME_CONNECT_STRING");
    Statement s = conn.createStatement();
    s.execute("SELECT 1 FROM DUAL");
    s.getResultSet().next();
    int i = s.getResultSet().getInt(1);
    System.out.println("The integer received was: " + i);
  }
}

使用此Dockerfile:

FROM openjdk:9
ADD ojdbc6.jar /usr/src/
ADD TestOJDBC.java /usr/src/
WORKDIR /usr/src/
RUN javac TestOJDBC.java
CMD ["java", "-classpath", ".:/usr/src/ojdbc6.jar", "TestOJDBC"]

有趣的是,这个最小的例子成功连接到数据库!

在Dockerize我的Oracle / SpringMVC应用程序时,有没有人对我有任何调试技巧?

0 个答案:

没有答案