4

サーブレットコンテキストリスナーでh2データベースを起動します。

public void contextInitialized(ServletContextEvent sce) {
     org.h2.Driver.load();
     String apprealPath = sce.getServletContext().getRealPath("\\");
     String h2Url = "jdbc:h2:file:" + apprealPath + "DB\\cdb;AUTO_SERVER=true";
     LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); 
        StatusPrinter.print(lc); 
     logger.debug("h2 url : " + h2Url);
     try {
   conn = DriverManager.getConnection(h2Url, "sa", "sa");
  } catch (SQLException e) {
   e.printStackTrace();
  }
  logger.debug("h2 database started in embedded mode");
        sce.getServletContext().setAttribute("connection", conn);
    }

次に、dbvisualizerを使用して、次のURLを使用してh2に接続しようとします。

jdbc:h2:tcp://localhost/~/cdb

ただし、次のエラーメッセージが表示されます。

An error occurred while establishing the connection:
   Type: org.h2.jdbc.JdbcSQLException   Error Code: 90067   SQL State: 90067
Message:
   Connection is broken: "Connection refused: connect" [90067-148]

localhostを「172.17.33.181:58524」(cdb.lock.dbで見つけました)に置き換えようとしましたが、ユーザー「sa」のパスワード「sa」で再接続すると、サーバーの応答が次のように変更されました:間違ったユーザー名またはパスワード!

4

1 に答える 1

13

自動混合モードでは、を使用する必要はありません(使用できません)jdbc:h2:tcp://localhost。どこでも同じURLを使用するだけです。つまり、jdbc:h2:file:...DB\\cdb;AUTO_SERVER=true

データベースがすでに開いているかどうかに関係なく、同じデータベースURLを使用できます。明示的なクライアント/サーバー接続(jdbc:h2:tcp://またはssl://を使用)はサポートされていません。

于 2010-12-24T11:15:14.930 に答える