где/как установить ресурсы конфигурации для Tomcat .war файлы

[Примечание: Это относится к iPhone SDK, не SDK Mac OS]

Из того, что я могу сказать, эти функции не присутствуют в SDK (unistd.h, файл решительно срезан когда по сравнению со стандартным Mac OS X 10,5 файлов). Я использовал бы что-то вроде:

[NSTemporaryDirectory() stringByAppendingPathComponent: [NSString stringWithFormat: @"%.0f.%@", [NSDate timeIntervalSinceReferenceDate] * 1000.0, @"txt"]];

Не самое симпатичное, но функциональный

7
задан Jason S 5 October 2009 в 20:38
поделиться

4 ответа

Для конкретного случая строки подключения JDBC я бы рекомендовал вместо этого использовать пул подключений, управляемый Tomcat. Вы можете узнать больше об этом здесь: http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html

Это больше работы, но я думаю, что в долгосрочной перспективе это послужит вам лучше.

4
ответ дан 6 December 2019 в 23:10
поделиться

Для конфигурации веб-приложения вы можете разместить конфигурацию в пути к классам. Затем вы можете перейти к нему из своего приложения с помощью getResourceAsStream или, если вы предпочитаете Spring:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
    <list>
      <value>classpath:my-config.properties</value>
    </list>
  </property>
</bean>

Есть ряд мест, где вы можете поместить свойства в путь к классам в Tomcat. в порядке просмотра:

/WEB-INF/classes of your web application 
/WEB-INF/lib/*. jar of your web application 
$CATALINA_HOME/common/classes 
$CATALINA_HOME/common/endorsed/*.jar 
$CATALINA_HOME/common/i18n/*.jar 
$CATALINA_HOME/common/lib / *. jar 
$CATALINA_BASE/shared/classes 
$CATALINA_BASE/shared/lib/*.jar  

Например, если вы поместите my-config.properties как в файл .jar, так и в WEB-INF / classes, будет использоваться файл из WEB-INF / classes. Вы можете использовать этот механизм по умолчанию для тестирования конфигурации и переопределения конфигурации prod на серверах prod.

5
ответ дан 6 December 2019 в 23:10
поделиться

Hmm. It looks like the easiest path to getting what I want on the Java side of the application is to use Servlet.getServletConfig().getInitParameter(parameterName) e.g. getInitParameter("myApp.connectionString");

But I don't know where to set this. The Tomcat docs talk about various permutations of context.xml but I want to make sure this parameter only affects my servlet and not any others. I also don't want to locate it within my .war file so that I can keep this parameter independent of the applications (for instance if I install an upgrade).


Update: I figured it out, key/value parameters accessible by ServletContext.getInitParameter() go here (or can go here) in ${CATALINA_HOME}/conf/server.xml:

<Server port=... >
    ...
  <Service name="Catalina" ...>
    <Engine name="Catalina" ...>
      ...
      <Host name="localhost" ...>
        <Context path="/myWarFile">
          <Parameter name="foo" value="123" />
          <Parameter name="bar" value="456" />
           ...
        </Context>
      </Host>
    </Engine>
  </Service>
</Server>

This sets two parameters, "foo" = "123", "bar" = "456" for the servlet myWarFile.war (or more accurately with the URL path /myWarFile) and I can get at them in Java with Servlet.getServletConfig().getInitParameter("foo") or Servlet.getServletConfig().getInitParameter("bar").

I also looked at JIRA's server.xml entry (and what they tell you to set it to for MySQL), they use a Resource rather than a Parameter, not quite sure of the subtleties of this but it seems like it could be more appropriate method.

<Server port=... >
  <Service name="Catalina" ...>
    <Engine name="Catalina" ...>
      <Host name="localhost" ...>
        <Context path="/jira" docBase="${catalina.home}/atlassian-jira" 
            reloadable="false">
          <Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"
            username="jirauser"
            password="..."
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost/jiradb1?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF8"
            maxActive="20"
            validationQuery="select 1"
          />
        </Context>
      </Host>
    </Engine>
  </Service>
</Server>
1
ответ дан 6 December 2019 в 23:10
поделиться

вы можете добавьте путь к файлам свойств в вашем CATALINA_HOME / conf / catalina.properties в "общем" загрузчике классов common.loader .

1
ответ дан 6 December 2019 в 23:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: