h2 проблема подключения в смешанном режиме - PullRequest
4 голосов
/ 24 декабря 2010

Я запускаю базу данных 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 для подключения к h2, используя следующий URL:

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", после чего ответ сервера изменился на: неверный логин или пароль!

1 Ответ

12 голосов
/ 24 декабря 2010

В Автоматический смешанный режим вам не нужно (и вы не можете) использовать jdbc:h2:tcp://localhost. Просто используйте один и тот же URL везде, что означает jdbc:h2:file:...DB\\cdb;AUTO_SERVER=true.

Вы можете использовать один и тот же URL базы данных независимо от того, открыта ли база данных или нет. Явные соединения клиент / сервер (с использованием jdbc: h2: tcp: // или ssl: //) не поддерживаются.

...