【问题标题】:How to start Derby server on the specified port by javajava如何在指定端口上启动Derby服务器
【发布时间】:2016-01-04 21:10:11
【问题描述】:

我尝试测试 Derby 示例源代码。不幸的是它失败了:Cannot connect Derby database: connection refused

有人告诉我我还没有启动服务器。官方教程:

  1. 不启动任何服务器。在C:\Apache\db-derby-10.4.1.3-bin\lib> java -jar derbyrun.jar server start 只是显示空行并且derbyrun.jar 结束后我没有任何反馈。

    1. 未显示如何在指定端口上创建服务器

我的问题是:如何在指定端口上启动服务器,以便发布的代码正常工作:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSetMetaData;


public class Restaurants
{
    private static String dbURL = "jdbc:derby://localhost:1526/myDB;create=true;user=me;password=mine";
    private static String tableName = "restaurants";
    // jdbc Connection
    private static Connection conn = null;
    private static Statement stmt = null;

    public static void main(String[] args)
    {
        createConnection();
        insertRestaurants(5, "LaVals", "Berkeley");
        selectRestaurants();
        shutdown();
    }

    private static void createConnection()
    {
        try
        {
            Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
            //Get a connection
            conn = DriverManager.getConnection(dbURL); 
        }
        catch (Exception except)
        {
            except.printStackTrace();
        }
    }

    private static void insertRestaurants(int id, String restName, String cityName)
    {
        try
        {
            stmt = conn.createStatement();
            stmt.execute("insert into " + tableName + " values (" +
                    id + ",'" + restName + "','" + cityName +"')");
            stmt.close();
        }
        catch (SQLException sqlExcept)
        {
            sqlExcept.printStackTrace();
        }
    }

    private static void selectRestaurants()
    {
        try
        {
            stmt = conn.createStatement();
            ResultSet results = stmt.executeQuery("select * from " + tableName);
            ResultSetMetaData rsmd = results.getMetaData();
            int numberCols = rsmd.getColumnCount();
            for (int i=1; i<=numberCols; i++)
            {
                //print Column Names
                System.out.print(rsmd.getColumnLabel(i)+"\t\t");  
            }

            System.out.println("\n-------------------------------------------------");

            while(results.next())
            {
                int id = results.getInt(1);
                String restName = results.getString(2);
                String cityName = results.getString(3);
                System.out.println(id + "\t\t" + restName + "\t\t" + cityName);
            }
            results.close();
            stmt.close();
        }
        catch (SQLException sqlExcept)
        {
            sqlExcept.printStackTrace();
        }
    }

    private static void shutdown()
    {
        try
        {
            if (stmt != null)
            {
                stmt.close();
            }
            if (conn != null)
            {
                DriverManager.getConnection(dbURL + ";shutdown=true");
                conn.close();
            }           
        }
        catch (SQLException sqlExcept)
        {

        }

    }
}

【问题讨论】:

  • 你输入 C:\Apache\db-derby-10.4.1.3-bin\lib> java -jar derbyrun.jar server start 后服务器是否真的在运行?你能找到过程吗?
  • @ozborn 不,它不会运行。程序运行时间很短。
  • 某处是否有错误日志?您应该会看到如下内容: 使用基本服务器安全策略安装的安全管理器。 Apache Derby 网络服务器 - 10.4.1.3 - (648739) 于 2008 年 4 月 28 日 17:13:13.921 GMT 开始并准备接受端口 1527 上的连接
  • @ozborn 只有一个空行然后命令提示符再次显示在下一行。
  • 你能找到derby.log(错误日志)吗?

标签: java sockets derby


【解决方案1】:

设置端口号

默认情况下,使用网络服务器的 Derby 侦听 TCP/IP 端口号 1527。如果您想使用不同的端口号,可以在启动网络服务器时在命令行中指定它。例如:

java org.apache.derby.drda.NetworkServerControl start -p 1088

但是,最好使用以下任何一种方法指定端口号

1. Change the startNetworkServer.bat or startNetworkServer.ksh scripts
2. Use the derby.drda.portNumber property in derby.properties

请参考:

https://db.apache.org/derby/docs/10.5/adminguide/tadminappssettingportnumbers.html

【讨论】:

    猜你喜欢
    • 2015-09-25
    • 1970-01-01
    • 2020-09-30
    • 2018-01-07
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多