Tomcat: как я могу поместить параметры в web.xml и получить их в моем приложении? - PullRequest
0 голосов
/ 03 февраля 2010

Я хотел бы сохранить информацию о подключении к БД в файле приложения web.xml и извлечь его в приложении. я где-то читал, что это возможно, я просто не знаю как.

есть идеи?

спасибо!

Ответы [ 2 ]

4 голосов
/ 03 февраля 2010

1) В зависимости от вашего сервера приложений или сервера, управляемого контейнером, СОЗДАЙТЕ пул соединений.

2) Свяжите свой пул ресурсов с вашим web.xml

например. (Tomcat 5.5 и выше).

У меня есть Example_DS (источник данных) в моем пуле соединений, и здесь я делюсь им в моем web.xml

<resource-ref>
        <description>Database Connection for Example</description>
        <res-ref-name>jdbc/Example_DS</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>

Это соответствует моему ресурсу, созданному в context.xml (находится в папке META-INF) в моем веб-приложении. Все еще использую Tomcat.

<Resource name="jdbc/Example_DS" auth="Container" type="javax.sql.DataSource"
            maxActive="100" maxIdle="30" maxWait="10000"
            username="YOURUSERNAMEHERE" password="YOURPASSWORDHERE" driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/DATABASEHERE?autoReconnect=true" 
            removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
            testOnBorrow="true" validationQuery="SELECT 1" />

Очевидно, вы можете видеть, что я использую MySQL здесь.

<Resource /> позволяет создать пул соединений (в Tomcat)

В JBoss ....

1) Создайте файл Example_DS.xml, где Example - это имя вашего источника данных.

1026 * Е.Г. *

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
   <local-tx-datasource>
      <jndi-name>Example_DS</jndi-name>
      <connection-url>jdbc:mysql://localhost:3306/DATABASEHERE?autoReconnect=true</connection-url>
      <driver-class>com.mysql.jdbc.Driver</driver-class>
      <user-name>YOURUSERNAMEHERE</user-name>
      <password>YOURPASSWORDHERE</password>
      <min-pool-size>0</min-pool-size>
      <max-pool-size>100</max-pool-size>
      <idle-timeout-minutes>2</idle-timeout-minutes>
      <track-statements>false</track-statements>
   </local-tx-datasource>
</datasources>

Затем используйте <resource-ref>, от которого я отказался ранее, чтобы сопоставить его с вашим DS в Jboss. Разверните файл DS.xml в папке / server / default / deploy / и перезапустите JBoss.

Как только вы закончите, вы можете вызвать его в Java, используя Context.

1 голос
/ 03 февраля 2010

Вы добавляете их как context-param в ваш web.xml:

<context-param>
    <description>My variable</description>
    <param-name>variable.name</param-name>
    <param-value>value</param-value>
</context-param>

Затем внутри вашего сервлета вы звоните getInitParameter() на ваш ServletContext:

String variable = getServletContext().getInitParameter("variable.name");
...