обрабатывать неверное соединение Hibernate в приложении Swing - PullRequest
0 голосов
/ 19 июля 2011

У меня есть приложение Swing, которое начинает запрашивать у пользователя параметры подключения, поскольку каждый пользователь может совершать ошибки. Я хочу знать, как лучше всего справляться с ошибками при попытке подключения, т.е. с неправильным URL-адресом

. ЧтоЯ получил кнопку, которая отправляет dbType, user, pass и url на карту, а затем я получаю EntityManagerFactory, который работает с целым приложением, как это:

emf = Persistence.createEntityManagerFactory("persistenceUnit", connectionProperties);

, однако занимает почти1 минута, чтобы сказать мне

java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection

  • Могу ли я манипулировать Hibernate, чтобы быстрее ответить на тайм-аут?
  • Должен ли я изменить способ использования entityManagerFactory?

РЕДАКТИРОВАТЬ: у меня есть класс Connector, все, что он делает, это позволяет графическому интерфейсу отправлять ему параметры, а затем позволяет моему DAO получить экземпляр этого класса для получения EntityManagerFactory.Это все мои свойства соединения, графический интерфейс изменяет диалект в зависимости от выбранной БД ::1019*

connectionProperties.put("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect"); connectionProperties.put("hibernate.connection.driver_class", "oracle.jdbc.driver.OracleDriver"); connectionProperties.put("hibernate.connection.url", userSettings.get("url", "")); connectionProperties.put("hibernate.connection.username", userSettings.get("username", "")); connectionProperties.put("hibernate.connection.password", userSettings.get("password", ""));

, и этот метод предоставляет EntityManager тому, кто в нем нуждается:

protected EntityManager getEntityManager() { if (em == null) {<br> em = Connector.getInstance().getEmf().createEntityManager();<br> return em; } else { return em; } }

1 Ответ

0 голосов
/ 22 июля 2011

Я должен сказать, что удивлен, что кажется, что единственный способ установить время ожидания соединения JDBC - это статический DriverManager.setLoginTimeout () .Я ожидал найти поддержку тайм-аута в популярных пулах соединений, но, похоже, он не существует, за исключением реализации C3P0 , не поддерживающей пул, которую вы не захотите использовать для производственного приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...