2012-04-18 40 views
5

¿Cómo obtener la ruta absoluta de la ubicación del servidor en mi máquina?Java: obtenga la ruta absoluta del servidor

Supongamos que estoy utilizando el servidor GlassFish entonces necesito obtener la ruta absoluta de ubicación docroot glassfish de la siguiente manera:

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

En tiempo de ejecución, tengo que crear el archivo en esa ubicación usando java io paquete como:

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

Look at [ 'ServletContext'] (http://docs.oracle.com/javaee/5/api/javax/servlet/ServletContext.html) para métodos como' getRealPath (ruta) '&' getContextPath() '. –

+0

request.getRealPath ("") o request.getServletContext(). GetRealPath ("") me da C: \ Users \ Administrator \ Documents \ NetBeansProjects \ ServletExamples \ build \ web –

+1

@ user966709 Obteniendo esa ruta probablemente porque de NetBeans u han configurado la implementación en caliente ... pero si realmente creas un archivo .war y lo despliegas, probablemente obtendrás la ruta a docroot –

Respuesta

-1

para que usted no necesita ir para la ruta completa porque

cuando se crea el archivo que por defecto se creará en ROOT o f servidor

que es C:\glassfish3\glassfish\ aquí.

espero que esto te ayude.

+0

Actualmente estoy usando la ruta codificada C: \ glassfish3 \ glassfish \ domains \ domain1 \ docroot para escribir archivos en esa ubicación, pero necesita obtener dinámicamente porque si alguna otra persona va a utilizar la aplicación, entonces puede ser que su servidor de peces de vidrio exista en el directorio d: \ y en este caso, necesita cambiar manualmente la ruta. –

+0

Escribir código en java Archivo file = new File ("/ domains/domain1/docroot/myfile.txt"); esto creará un archivo en C: \ glassfish3 \ glassfish \ domains \ domain1 \ docroot \ myfile.txt incluso su glassfish en c: \ o d: \ no importa. –

0

tuve un problema similar y terminó con el uso de

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

porque necesitaba el camino de una función estática. Esto apunta en alguna parte al directorio WEB-INF/classes. Con esto podrías señalar algo como path.subString(0,path.indexOf("WEB-INF")).

Un problema que tuve con esto: cuando ejecuté una prueba de Eclipse, me indicó el directorio "compilar" del proyecto.

0

Esta es una muy mala idea. Si está ejecutando un archivo WAR o EAR, el docroot no estará en un sistema de archivos grabable. Asumir que este es el caso puede llevar a dolores de cabeza más tarde.

Utilice un método diferente, como un parámetro de inicialización de servlet, para especificar una ubicación grabable del sistema de archivos.

3

Si utiliza GlassFish para comenzar GlassFish, es decir, utilizar asadmin start-domain|start-instance continuación ofrecemos los siguientes férrea garantía:

El directorio de trabajo actual de la JVM es absolutamente, garantizada de manera positiva a ser el directorio de configuración del dominio o servidor. En el caso por defecto que sería:

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

Si quieres escribir algo que (por defecto) docroot, usted puede hacer esto:

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

Otra opción que está garantizado para siempre trabajo en todos los escenarios, incluso si inicia el servidor con java directamente (por ejemplo, java -jar glassfish.jar) es utilizar el valor de la propiedad del sistema como lo siguiente:

0

no sé si esta es la mejor manera, pero funciona para mí :)

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

Obtiene la ruta del lugar donde inició el servidor de aplicaciones, generalmente el lugar donde se encuentra el archivo startup.sh/startup.bat. Este script puede no estar necesariamente dentro de la carpeta del servidor. – Hoffmann

0

puede probar lo siguiente:

System.getProperty("catalina.base"); 

Y se pueden encontrar otras propiedades observando siguiente variable en modo de depuración.

Properties properties = System.getProperties(); 
+0

específico para el servidor web particular –

+0

pero como puedo ver, el que pregunta está usando glassfish. por lo que será útil para él/ella. –

+0

Intenté hacer esto, pero lamentablemente no encontré ninguna ruta absoluta para revelar la raíz de mis servidores. ¿Sabes cómo determinarlo? (Utilicé el segundo código y lo imprimí a través del registro). –

Cuestiones relacionadas