Mam to wymaganie, aby moja aplikacja internetowa musiała odczytać plik właściwości spoza katalogu webapps Tomcat, na przykład z $ CATALINA_HOME/properties/myapp.properties. Próbowałem kilka rzeczy, ale jak dotąd bez powodzeniaJak odczytać plik właściwości poza kontekstem mojej aplikacji webowej w Tomcat
Odpowiedz
Istnieje wiele podejść.
- użycie zmiennej środowiska
- wykorzystują system Property
- ustawić go jako kontekst aplikacji Param w web.xml
Herezje próbka, która pokazuje Option 1 and Option 2
try {
//Use Any Environmental Variable , here i have used CATALINA_HOME
String propertyHome = System.getenv("CATALINA_HOME");
if(null == propertyHome){
//This is a system property that is passed
// using the -D option in the Tomcat startup script
propertyHome = System.getProperty("PROPERTY_HOME");
}
String filePath= propertyHome+"/properties/myapp.properties";
Properties property = new Properties();
property.load(SystemTest.class.getClassLoader().getResourceAsStream(filePath));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Dziękujemy! Użyłem twojego drugiego podejścia z System Property "catalina.home" Dokładnie tego potrzebowałem! – user2152898
W naszym projekcie, że config ścieżkę pliku jako vm argumenty, które będą przechowywane we właściwościach Tomcat i kod, wykorzystać System.getProperty(the parameter you config)
uzyskać ścieżkę i odczytać plik właściwości , a następnie uzyskaj wyniki.
Tak, ale na wypadek, gdyby Tomcat i jeśli potrzebuję czytać plik gdzieś w klasie .... implementuje ServletContextListener {} Mam ścieżkę powiązaną z WAR! Czy jest możliwe, że coś używa np. SPRING, aby uzyskać ścieżkę poza WAR? file: d: /my/path/toFile.log – AnNik
Preferuję opcję konfigurowania za pomocą deskryptorów kontekstu Tomcat.
These XML dokumenty są umieszczane w folderze tomcat/conf/Catalina/<host>/*.xml
Odnosi się to do: Externalizing Tomcat webapp config from .war file
Włożyliśmy ścieżkę katalogu webapp-config następująco:
/var/lib/tomcat7/webapps/webapp/WEB-INF/classes/system-properties-location.properties
gdzie webapp = nazwa pliku webapp
Oto treść system-properties-location.properties pliku:
lokalizacji =/var/lib/tomcat7/webapp-configs/webapp
Wskazuje lokalizację zewnętrzną, z której będą pobierane określone właściwości środowiska. W ten sposób możemy wdrożyć tę samą wojnę w dev, inscenizację i prod bez modyfikacji zawartości wojennej.
Plik jest plikiem; daj mu ścieżkę i przeczytaj. –
Tak, to jest łatwe do zrobienia. To nie jest bezsensowne, istnieją ku temu powody. – Rob
Myślę, że plik zostanie udostępniony przez wiele projektów, zamieszczam odpowiedź, mam nadzieję, że da ci to wskazówkę. – OQJF