пул соединений Tomcat - PullRequest
       7

пул соединений Tomcat

1 голос
/ 09 апреля 2009

У меня есть простой сервлет, работающий в Tomcat. Поскольку сервлет подключается к базе данных, мне нужно использовать пул соединений. Однако все примеры в Интернете предполагают, что (разработчик) никогда не изменится, к какой базе данных подключается сервлет.

Например, вот пример файла context.xml.

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/feeds">
    <Resource name="jdbc/TestDB"
        auth="Container"
        type="javax.sql.DataSource"
        factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
        username="username"
        password="password"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://example.com:1234/myDB"
        maxWait="1000"
        removeAbandoned="true"
        maxActive="30"
        maxIdle="10"
        removeAbandonedTimeout="60"
        logAbandoned="true"/>
</Context>

В моем случае у меня есть тестовый сервер (postgresql) и рабочий сервер (ms sql), поэтому все учебные пособия, предполагающие, что я могу просто установить параметры жесткого кода в context.xml, не будут работать.

У меня есть 2 разных файла свойств для URL базы данных, аутентификации и т. Д., Которые я использую, один для тестового сервера, другой для рабочего сервера, и это прекрасно работает, но теперь, если я хочу использовать пул соединений, как мне интегрировать это в мой сервлет?

Я хочу иметь возможность нажать «build» в Netbeans 6.5, взять войну в каталоге dist и поместить ее в директорию приложения tomcat на любом сервере, без необходимости менять xml-файлы после новой войны был развернут. Сервлет знает, где взять файл свойств в каждой системе, поэтому, если я смогу интегрировать файл свойств со свойствами пула соединений, я бы все установил.

Есть идеи ...?

Ответы [ 2 ]

4 голосов
/ 09 апреля 2009

Я поместил все свои определения источника данных в файл conf / server.xml tomcat, чтобы война полностью зависела от источника данных.

server.xml:

<GlobalNamingResources>
    <Resource name="mail/Mail" auth="Container" type="javax.mail.Session"
              mail.smtp.host="localhost"/>
    <Resource auth="Container" type="javax.sql.DataSource" name="jdbc/lagalerie"
              driverClassName="org.postgresql.Driver"
              url="jdbc:postgresql://localhost/lagalerie?charSet=LATIN1"
              maxActive="100" maxIdle="30" maxWait="10000"
              username="casashop" password="casashop"/>
</GlobalNamingResources>

context.xml:

  <ResourceLink global="jdbc/lagalerie" name="jdbc/lagalerie" type="javax.sql.DataSource"/>
  <ResourceLink global="mail/Mail" name="mail/Mail" type="javax.mail.Session"/>

web.xml:

<resource-ref>
    <description>The datasource</description>
    <res-ref-name>jdbc/DataSource</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
    <description>The mail session</description>
    <res-ref-name>mail/Mail</res-ref-name>
    <res-type>javax.mail.Session</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
0 голосов
/ 09 апреля 2009

Вы можете иметь 2 разных соединения и на лету определить, какое соединение использовать в приложении.

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