2013-06-05 1 views
0

Я пытаюсь реализовать пул соединений для приложения JSF 2.1, в котором есть база данных H2 и встроенный в нее веб-сервер Jetty 9. У меня есть два варианта реализации пула соединений для базы данных h2. Варианты, позволяющие Jetty реализовать пул соединений для меня, или я определяю управляемый компонент, обработанный приложениями, который создает пул соединений. Я хотел бы знать, какой будет лучший подход при обработке пула соединений?Каков наилучший способ обработки пула соединений?

Пулы соединений с помощью приложения контекстного управляемого компонента:

JdbcConnectionPool cp = JdbcConnectionPool.create(
      "jdbc:h2:~/test", "sa", "sa"); 
     for (String sql : args) { 
      Connection conn = cp.getConnection(); 
      conn.createStatement().execute(sql); 
      conn.close(); 
     } 
     cp.dispose(); 

ответ

1

Либо подход пула соединений хорошо. Существует множество реализаций пула соединений (каждый из которых имеет преимущества и недостатки), используйте все, что вы хотите использовать.

Если у вас есть список операторов для выполнения, то я бы не открыл новое соединение для каждого оператора. Вместо этого, выполнять все операторы с той же связи (и заявления):

JdbcConnectionPool cp = JdbcConnectionPool.create(
    "jdbc:h2:~/test", "sa", "sa"); 
... 
Connection conn = cp.getConnection(); 
Statement stat = conn.createStatement(); 
for (String sql : args) { 
    stat.execute(sql); 
} 
conn.close(); 
... 
cp.dispose(); 

Бассейн соединение можно запустить/остановить:

  • Вне веб-приложения, как ресурс (это немного больше, сложный, на мой взгляд), например, как описано в статье "Database Connection Pooling with Tomcat". Вы найдете аналогичную документацию для Jetty.

  • Использование ServletContextListener (также описано в документации по H2). На мой взгляд, это немного проще. Недостатком является то, что пул соединений не может использоваться несколькими веб-приложениями.

+0

Я пытаюсь использовать реализацию Jetty стороны для аккумулирования подключения, я застрял с этим error.13: 51: 19.689: WARN: oejx.XmlConfiguration: главный: Ошибка конфигурации в <Нового Ид = "myds "class =" org.eclipse.jetty.webapp.WebAppContext "> java: comp/env/jdbc/MyH2DS | ??? <Новый класс =" org.h2.jdbcx.JdbcDataSource "><Установить имя =" URL "> jdbc: h2:/data/test<Установить имя =" Пользователь "> sa<Установить имя =" Пароль "/> | ?? java.lang.IllegalStateException: Не подходит конструктор – FiendFyre

+0

Я пытаюсь открыть базу данных с пулом соединений при запуске веб-приложения и закрыть его, когда веб-приложение остановится. Я проверил документацию H2 и Jetty, но не смог найти, как реализовать это. – FiendFyre

+0

Я добавил информацию о том, как запустить/остановить пул подключений в веб-приложении. –