Как добавить пул соединений c3p0 или DBCP? - PullRequest
2 голосов
/ 13 апреля 2010

Не могли бы вы объяснить мне, как добавить автономный пул соединений c3pO или DBCP в мой проект JPA на основе toplink?

У меня есть файл persistence.xml, и каждый раз, когда я хочу выполнить запрос к базе данных, я делаю это:

EntityManagerFactory emf = this.getEntityManagerFactory ();

// Обязательно используйте persistence.xml для настройки фабрики

EntityManager em = emf.createEntityManager (); ...

Где я могу построить мост между менеджером пула внешних подключений и Toplink? Любые идеи или ссылки приветствуются.

С уважением, Jean

Ответы [ 2 ]

0 голосов
/ 14 апреля 2010

Я действительно не понимаю, что делать. Так что расплывчатая страница для начинающего. Тем не менее, я создал класс SessionCustomizer отдельно. Вот мой метод customize (), использующий c3p0:

public void customize(Session session) throws Exception{ 
DataSource ds = DataSources.unpooledDataSource("myServerURL", "login", "pwd"); 
DataSource pooled = DataSources.pooledDataSource(ds); 
JNDIConnector conn = (JNDIConnector)session.getLogin().getConnector(); 
conn.setDataSource(pooled); 
conn.setLookupType(JNDIConnector.STRING_LOOKUP); 
}

Я даже не думаю, что это правильно. Я выкладываю информацию о своем соединении в виде кода, действительно странно.

Во-вторых, в файле persistence.xml по ссылке они поставили:

<non-jta-data-source>java:comp/env/jdbc/DefaultDS</non-jta-data-source>
   <class>sample.MyEntity</class>
   <properties>
     <property name="toplink.session.customizer" value="es.claro.commons.ds.DataSourceSessionCustomizer"/>
   </properties>

Что я должен добавить в мой, особенно для тега "не-jta-data-source"? Есть ли способ поместить информацию о соединении в этот XML вместо кода?

справка.

0 голосов
/ 14 апреля 2010

Я не использую Toplink, поэтому я не тестировал это, но мое понимание различных ресурсов, найденных в сети, заключается в том, что вам необходимо обеспечить реализацию SessionCustomizer.В этой реализации используйте класс JNDIConnector, чтобы дать объект a DataSource ( c3p0 реализует API DataSource) с использованием setDataSource(javax.sql.DataSource) method.

Адаптируйте образец из Работа с источником данных не JTA в Toplink Essentials .

...