Хм. Похоже, что самый простой способ получить то, что я хочу на Java-стороне приложения, это использовать Servlet.getServletConfig().
getInitParameter(parameterName)
, например. getInitParameter ( "myApp.connectionString");
Но я не знаю, где это установить. В Tomcat docs говорится о различных перестановках context.xml, но я хочу убедиться, что этот параметр влияет только на мой сервлет, а не на другие. Я также не хочу размещать его в моем файле .war, чтобы сохранить этот параметр независимым от приложений (например, если я установлю обновление).
Обновление: Я понял, параметры ключа / значения доступны для ServletContext.getInitParameter () иди сюда (или можешь пойти сюда) в $ {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>
Это устанавливает два параметра: "foo" = "123", "bar" = "456" для сервлета myWarFile.war (или, точнее, с путем URL /myWarFile
), и я могу получить их на Java с Servlet.getServletConfig().getInitParameter("foo")
или Servlet.getServletConfig().getInitParameter("bar")
.
Я также посмотрел на запись server.xml в JIRA (и , что они говорят вам установить для MySQL ), они используют Resource
вместо Parameter
, не совсем уверенный в тонкости этого, но кажется, что это может быть более подходящим методом.
<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&useUnicode=true&characterEncoding=UTF8"
maxActive="20"
validationQuery="select 1"
/>
</Context>
</Host>
</Engine>
</Service>
</Server>