2010-11-21 12 views

Odpowiedz

26

Jak mogę znaleźć jego nazwę?

Już ją masz. Może chciałeś znaleźć absolutną lokalizację pliku? Możesz użyć do tego celu ServletContext#getRealPath().

String relativeWARPath = "/META-INF/MANIFEST.MF"; 
String absoluteDiskPath = getServletContext().getRealPath(relativeWARPath); 
File file = new File(absoluteDiskPath); 
// ... 

Lub jeśli chcesz dostać go jako InputStream bezpośrednio użyć ServletContext#getResourceAsStream().

InputStream input = getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF"); 
// ... 
+0

Dzięki, tego właśnie szukam. Teraz muszę dowiedzieć się jak uzyskać 'ServletContext' w klasie, która nie jest serwletem .. Wygląda na to, że muszę zarejestrować mój niestandardowy' ServletContextListener' w 'sieci .xml' .. prawda? – yegor256

+0

Po prostu przekaż go jako argument konstruktora lub metody. – BalusC

+0

Co powiesz na 'ServletContextListener'? Czy idę właściwą drogą? – yegor256

0

Istnieje kilka sposobów, aby to zrobić, a wybrana odpowiedź to działa tylko wtedy, gdy chcesz przeczytać Manifiest plików na warstwie Servlet/SpringMVC lub jakiejkolwiek innej warstwie, do której możesz uzyskać dostęp do ServletContext.

Jednakże, jeśli chcesz odczytać wartość, taką jak "wersja", nawet przed uruchomieniem Servletu, jak podczas konfiguracji logback lub czegoś innego, może być konieczne wykonanie klasycznej operacji ładowania klas lub Manifest.

Znalazłem to repozytorium github (nie moje) i zawiera ono 4 różne sposoby odczytu informacji z pliku Manifest. Jeśli twoja sytuacja nie jest dostępna dla ServletContext, sprawdź te.

https://github.com/khmarbaise/version-examples

Powiązane problemy