Пул соединений с базой данных JBoss - PullRequest
7 голосов
/ 04 мая 2009

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

Может кто-нибудь указать мне учебник или пример кода, который использует источник данных jboss в веб-приложении.

Ответы [ 3 ]

10 голосов
/ 04 мая 2011

сначала создайте xml-файл с именем xxx-ds.xml и поместите этот файл в server/default/deploy/xxx-ds.xml

<datasources>
<local-tx-datasource>
<jndi-name>/jdbc/Exp</jndi-name>
<type-mapping>SQL</type-mapping>
<connection-url>jdbc:microsoft:sqlserver://          </connection-url>
<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
<user-name></user-name>
<password></password>
<min-pool-size>5</min-pool-size>
<max-pool-size>1000</max-pool-size>
</local-tx-datasource>
</datasources>

jboss-web.xml

<jboss-web>
<!--  <security-domain flushOnSessionInvalidation="false"/>-->
<!--  <context-root>/BSI</context-root>-->
  <resource-ref>
        <description>Database connection resource</description>
        <res-ref-name>jdbc/Exp</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <jndi-name>java:/jdbc/Exp</jndi-name>
        <res-auth>Container</res-auth>
    </resource-ref>
</jboss-web>

web.xml

<resource-ref>
    <description>Database connection resource</description>   
    <res-ref-name>jdbc/Exp</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

и теперь в вашем .java файле

javax.naming.Context ctx1 = new javax.naming.InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) ctx1.lookup("java:comp/env/jdbc/Exp");
con = ds.getConnection();

***** убедитесь, что имя ссылки на ресурс должно быть одинаковым во всех местах

8 голосов
/ 04 мая 2009

Пул в JBoss все обрабатывается в конфигурации источника данных. Здесь - это HowTo. Веб-приложение должно будет выполнить поиск JNDI для источника данных, чтобы получить соединение с базой данных, а не делать прямой URL-адрес JDBC, и тогда у вас будет пул.

Транзакции - это еще одна история.

РЕДАКТИРОВАТЬ: В ответ на ваш комментарий о том, как это влияет на код, это выглядит так:

String jndiPath = "java:DataSourceJNDIName"; //The exact prefix here has a lot to do with clustering, etc., but if you are using one JBoss instance standalone, this works.
Context ctx = new InitialContext();
DataSource ds = (DataSource) PortableRemoteObject.narrow(ctx.lookup(jndiPath), DataSource.class);
Connection c = ds.getConnection();

Технически говоря, PortableRemoteObject.narrow не является обязательным в конфигурации отдельного сервера JBoss (4.2.2 в любом случае) наверняка, но это более правильный стандартный код J2EE, поскольку серверам общего применения не нужно возвращать объект правильный тип только для того, чтобы сделать Context.lookup.

Вышеуказанное не охватывает вопросы использования ресурсов и обработки ошибок. Предполагается, что вы закроете этот объект Context, когда закончите, и, конечно, соединение с базой данных, хотя JBoss будет кричать на вас, если вы забудете закрыть соединение с базой данных, и транзакция завершится, и закройте его для вас.

В любом случае, этот объект Connection можно использовать так же, как DriverManager.getConnection (url);

1 голос
/ 04 мая 2009

Вам не нужно ничего менять. Когда вы выбираете правильный тип источника данных (local-tx-datasource / xa-datasource), обработка соединения и TX выполняется для вас. В $ JBoss / docs / examples / jca вы найдете шаблоны практически для каждой базы данных, которые вы можете просто использовать повторно.

Если вы используете XA, вам необходимо настроить Tx-recovery. Посмотрите эту публикацию с практическими рекомендациями: http://management -platform.blogspot.com / 2008/11 /action-recovery-in-jbossas.html (ну, может быть, не как в автономном режиме, а в сочетании с источником Jopr код).

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