Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在何处/如何设置Tomcat.war文件的配置资源_Java_Configuration_Tomcat - Fatal编程技术网

Java 在何处/如何设置Tomcat.war文件的配置资源

Java 在何处/如何设置Tomcat.war文件的配置资源,java,configuration,tomcat,Java,Configuration,Tomcat,我需要修改.war文件的源代码树,以便添加一些特定于应用程序的配置信息(在本例中为jdbc连接字符串,但可能有其他属性,如资源)。将配置信息放在何处以及如何从Servlet中访问配置信息的最佳实践是什么 我猜这与此有关,但当我尝试阅读它时,我的眼睛会变得呆滞。对于JDBC连接字符串的特定情况,我建议使用Tomcat托管连接池。您可以在此处阅读有关此操作的更多信息: 这需要更多的工作,但我认为从长远来看,它会更好地为您服务。对于web应用程序配置,您可以将配置放在类路径的某个位置。然后,如果您喜

我需要修改.war文件的源代码树,以便添加一些特定于应用程序的配置信息(在本例中为jdbc连接字符串,但可能有其他属性,如资源)。将配置信息放在何处以及如何从Servlet中访问配置信息的最佳实践是什么


我猜这与此有关,但当我尝试阅读它时,我的眼睛会变得呆滞。

对于JDBC连接字符串的特定情况,我建议使用Tomcat托管连接池。您可以在此处阅读有关此操作的更多信息:


这需要更多的工作,但我认为从长远来看,它会更好地为您服务。

对于web应用程序配置,您可以将配置放在类路径的某个位置。然后,如果您喜欢Spring,您可以通过应用程序访问它:

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

例如,如果将my-config.properties放在.jar文件和WEB-INF/classes中,则将使用WEB-INF/classes中的属性。您可以使用此机制在prod服务器上默认测试配置并覆盖prod配置。

Hmm。在应用程序的Java端获得所需内容的最简单方法似乎是使用
Servlet.getServletConfig()。
例如getInitParameter(“myApp.connectionString”)

但我不知道该放在哪里。本文讨论了context.xml的各种排列,但我想确保这个参数只影响我的servlet,而不影响任何其他参数。我也不想在.war文件中找到它,这样我就可以使这个参数独立于应用程序(例如,如果我安装了升级)


更新:我发现,${CATALINA_HOME}/conf/server.xml中的go-here(或can-go-here)可以访问键/值参数:

<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>

您可以在“common”类加载器common.loader中的
CATALINA_HOME/conf/CATALINA.properties
中添加属性文件的路径。

谢谢。。。从长远来看,你可能是对的,但这可能是我将长期开发的唯一一款Tomcat应用程序+我没有太多的空闲时间来考虑如何调整我的应用程序。apache文档不是很清楚。在花时间梳理我的头发(唉…)和查看JIRA server.xml之后,现在这就更有意义了。但是,如何从Java应用程序中访问数据源?示例页面给出了一个JSP示例,但没有给出Java代码示例。它们还包括下面的几个示例(例如,在PostgreSQL部分的步骤4中)。这个问题中还有另一个示例:这是一个仅链接的答案。您能用链接源的摘录来丰富它吗?这些参数在web.xml文件的servlet标记中配置,使用:init param、param name和param value。哪个web.xml文件?是在my.war文件中还是在${CATALINA_HOME}/conf中?如果是前者,我不需要这样做,如果是后者,我不理解适当的语法。相反的呢?如果我想在web应用程序中有一个属性文件,以防找不到Tomcat文件。有办法做到这一点吗?WEB应用程序中不是有WEB\u INF/类吗?
<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>
<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>