【问题标题】:Java derby database server won't start anymoreJava derby 数据库服务器将不再启动
【发布时间】:2014-09-19 08:14:26
【问题描述】:

我继承了一些使用 derby 数据库的源代码,但无法启动服务器。

public void startDatabase(){
    try {
        Class.forName("org.apache.derby.jdbc.ClientDriver");
        System.setProperty("derby.system.home", "D:\\runtime-my.product\\log");

        NetworkServerControl nsc = new NetworkServerControl(InetAddress.getByName("localhost"), 1527)
        nsc.start(null);
        nsc.ping();
    catch (Exception e){
        e.printStackTrace();
    }
}

nsc.ping()执行时,抛出如下异常:

Exception: java.lang.Exception: DRDA_NoIO.S:Could not connect to Derby Network Server on host 127.0.0.1, port 1527: Connection refused: connect

这些代码行有什么明显的缺失或错误吗?

【问题讨论】:

    标签: java database derby


    【解决方案1】:

    检查服务器是否启动。您需要显式启动服务器。或通过 设置系统属性derby.drda.startNetworkServer=true

    【讨论】:

      【解决方案2】:

      从 NetworkServerControl 构造函数返回到套接字准备好连接之前需要一段时间。在我的机器上大约 50 毫秒。我改变了你的例子:

      NetworkServerControl nsc = new NetworkServerControl(InetAddress.getByName("localhost"), 1527);
          nsc.start(null);
          for (int i = 0; i < 10; ++i) {
              try {
                  System.out.println("Attempting to ping...");
                  nsc.ping();
                  break;
              } catch (Exception e) {
                  System.out.println(e.getMessage());
              }
              Thread.sleep(10);
          }
      

      第 5 次尝试成功...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-19
        • 2013-08-18
        • 1970-01-01
        • 1970-01-01
        • 2014-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多