2012-04-18 20 views
5

Jak uzyskać bezwzględną ścieżkę lokalizacji serwera w moim komputerze?Java - Uzyskaj absolutną ścieżkę serwera

Załóżmy Używam serwera GlassFish następnie trzeba uzyskać bezwzględną ścieżkę GlassFish lokalizacji docroot jak poniżej:

C:\glassfish3\glassfish\domains\domain1\docroot 

W czasie wykonywania, trzeba utworzyć plik o tej lokalizacji używając Java IO opakowania jak:

C:\glassfish3\glassfish\domains\domain1\docroot\myfile.txt 
+5

Spójrz [ 'ServletContext'] (http://docs.oracle.com/javaee/5/api/javax/servlet/ServletContext.html) metod, takich jak' getRealPath (ścieżki) 'i' getContextPath() '. –

+0

request.getRealPath ("") lub request.getServletContext(). GetRealPath ("") daje mi C: \ Users \ Administrator \ Documents \ NetBeansProjects \ ServletExamples \ build \ web –

+1

@ user966709 ur uzyskanie tej ścieżki prawdopodobnie dlatego, że od NetBeans skonfigurowałem hot deployment .. ale jeśli naprawdę utworzysz plik .war i wdrożysz go, prawdopodobnie dostaniesz ścieżkę do docroot –

Odpowiedz

-1

do tego nie trzeba iść do pełnej ścieżki, ponieważ

podczas tworzenia pliku niż domyślnie stworzy w ROOT o f ty serwer

który jest tutaj C:\glassfish3\glassfish\ tutaj.

mam nadzieję, że to ci pomoże.

+0

Obecnie używam zakodowanej na sztywno ścieżki C: \ glassfish3 \ glassfish \ domains \ domain1 \ docroot do zapisu pliku na tę lokalizację, ale trzeba się dynamicznie, ponieważ jeśli jakaś inna osoba skorzysta z aplikacji, to może być jego szklany serwer rybny istnieje w katalogu d: \ iw tym przypadku musi ręcznie zmienić ścieżkę. –

+0

Wpisz kod w java Plik file = new Plik ("/ domains/domain1/docroot/myfile.txt"); to utworzy plik w C: \ glassfish3 \ glassfish \ domains \ domain1 \ docroot \ myfile.txt nawet Twój glassfish w c: \ lub d: \ nie ma znaczenia. –

0

miałem podobny problem i skończyło się z użyciem

path = getClass().getProtectionDomain().getCodeSource().getLocation() 

bo potrzebne ścieżkę na funkcję statycznego. To wskazuje gdzieś w katalogu WEB-INF/classes. Dzięki temu możesz wskazać coś takiego, jak path.subString(0,path.indexOf("WEB-INF")).

Jeden problem, który miałem z tym: Podczas uruchamiania testu z Eclipse, to zwrócił mi uwagę na "build" katalogu projektu.

0

To bardzo zły pomysł. Jeśli używasz pliku WAR lub EAR, dokument nie będzie zapisywalny w systemie plików. Zakładając, że tak jest, może to później prowadzić do bólów głowy.

Użyj innej metody, na przykład parametru inicjalizacji serwletu, aby określić lokalizację systemu plików do zapisu.

3

Jeśli używasz serwera GlassFish zacząć GlassFish, czyli używać asadmin start-domain|start-instance następnie proponujemy następującą żelazną gwarancję:

bieżącego katalogu roboczego od JVM jest absolutnie, pozytywnie gwarancją katalog config domeny lub serwer. W przypadku domyślnym że byłoby:

c:/glassfish3/glassfish/domains/domain1/config 

Jeśli chcesz napisać coś (domyślnie) docroot, można to zrobić:

File f = new File("../docroot/yourfile"); 

Inną opcją, która jest gwarantowana na zawsze działa w każdym scenariuszu, nawet jeśli uruchamiasz serwer bezpośrednio w java (np. java -jar glassfish.jar), należy użyć wartości właściwości systemowej:

File f = new File(System.getProperty("com.sun.aas.instanceRoot") + "/docroot/yourfile"); 
0

Nie wiem, czy jest to najlepszy sposób, ale to działa na mnie :)

String path = new File("").getAbsolutePath() + File.separator + "docroot"; 
+1

Powoduje to przejście do miejsca, w którym uruchomiono serwer aplikacji, zwykle do miejsca, w którym znajduje się plik startup.sh/startup.bat. Ten skrypt niekoniecznie musi znajdować się w folderze serwera. – Hoffmann

0

można spróbować następujących czynności:

System.getProperty("catalina.base"); 

I można znaleźć inne właściwości oglądając następujący zmienna w trybie debugowania.

Properties properties = System.getProperties(); 
+0

specyficzne dla konkretnego serwera WWW –

+0

, ale jak widzę, osoba pytająca pyta używa Glassfish. więc będzie mu to przydatne. –

+0

Próbowałem to zrobić, ale niestety nie znalazłem żadnej absolutnej ścieżki do ujawnienia katalogu głównego mojego serwera. Czy wiesz, jak to ustalić? (Użyłem drugiego kodu i wydrukowałem go przez logowanie). –

Powiązane problemy