Hmm. Wygląda na to, że najprostszą ścieżką do uzyskania tego, co chcę, po stronie Java aplikacji, jest użycie Servlet.getServletConfig().
getInitParameter(parameterName)
np. getInitParameter ("myApp.connectionString");
Ale nie wiem, gdzie to ustawić. Tomcat docs mówi o różnych permutacjach pliku context.xml, ale chcę się upewnić, że ten parametr dotyczy tylko mojego serwletu, a nie innych. Nie chcę również umieszczać go w pliku .war, aby ten parametr był niezależny od aplikacji (na przykład po zainstalowaniu aktualizacji).
Aktualizacja: I zorientowaliśmy się, kluczowe parametry/wartość przystosowane przez ServletContext.getInitParameter() iść tutaj (lub może przejść tutaj) w $ {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>
To ustawia dwa parametry, "foo" = "123", "bar" = "456" dla serwletu myWarFile.war (lub dokładniej ze ścieżką URL /myWarFile
) i mogę uzyskać do nich dostęp w Javie z Servlet.getServletConfig().getInitParameter("foo")
lub Servlet.getServletConfig().getInitParameter("bar")
.
ja również spojrzał na Jira za wejściem server.xml (i what they tell you to set it to for MySQL), używają Resource
zamiast Parameter
, nie całkiem pewny subtelności tego, ale wydaje się, że to może być bardziej odpowiedni sposób.
<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>
dzięki ...Prawdopodobnie masz rację co do dłuższego czasu, ale jest to prawdopodobnie jedyna aplikacja Tomcat, nad którą będę pracował przez długi czas. + Nie mam zbyt dużo wolnego czasu, aby wymyślić jak poprawić moją aplikację. Dokumenty Apache nie są bardzo jasne. –
ma to trochę więcej sensu, po spędzeniu czasu wyciągając moje włosy (niestety ...) i po obejrzeniu pliku JIRA server.xml. Jak jednak uzyskać dostęp do DataSource z poziomu mojej aplikacji Java? Przykładowa strona podaje przykład JSP, ale nie kodu Java. –
Obejmują one kilka przykładów poniżej (np. W sekcji PostgreSQL, krok 4). –