2011-06-16 23 views
5

Estoy experimentando con Java Web Start.Java Web Start getDocumentBase

Acabo de escribir un JApplet básico que tiene un método en la clase Applet llamada getDocumentBase(). Esto devuelve el URL completo a la ubicación donde se está ejecutando el Applet (en Tomcat), es decir, http://myserver:8080/myapp/whateverapplet.jar.

Sin embargo, estoy buscando algo similar con una aplicación de inicio web. Necesito saber dónde se está ejecutando. ¿Hay algo que pueda darme esta información?

EDITAR

En cuanto a dónde se está ejecutando quiero decir si me quedo un comienzo web desde un archivo JNLP que quiero:

http://myserver:8080/myapp

Si corro el JAR desde una carpeta en la red que quiero:

\\ servidor \ miaplicacion

O si corro el J AR de una carpeta en mi máquina Quiero:

D: \ miaplicacion

Fin Editar

+2

¿Qué quiere decir con "Necesito saber dónde se está ejecutando"? – aioobe

+0

@aioobe - He actualizado la pregunta. – Andez

Respuesta

5

Supongo que quieres obtener la URL del código base dentro de tu aplicación en ejecución? Si este es el caso, puede utilizar este fragmento:

final BasicService bs = (BasicService) ServiceManager.lookup(
    "javax.jnlp.BasicService"); 
final URL codeBase = bs.getCodeBase(); 

Tenga en cuenta que tendrá que depender de la JNLP API para compilar el código (para la clase BasicService).

+0

@Andrew - gracias por el ejemplo. Lo probé en mi código y funciona bien desde el inicio de la web. Como mencioné en la otra respuesta por aioobe, probé MyClass.class.getProtectionDomain(). GetCodeSource(). GetLocation(). ToExternalForm() que me dio la ruta completa al archivo JAR, sin embargo, quería saber la ubicación. – Andez

+0

@Andez: "@Andrew - gracias por el ejemplo". De nada, pero ITYM 'Waldheinz' allí. ;) Acabo de editar la respuesta. –

3

Quizás javax.jnlp.BasicService.getCodeBase es lo que estás buscando.

Devuelve la base de código para la aplicación. La base de código se especifica directamente en el archivo JNLP o es la ubicación del archivo JAR que contiene la clase principal de la aplicación.

Devuelve:
        una URL con el código base de la aplicación

(Los BasicService"imita la funcionalidad sin apretarAppletContext" que proporciona la getDocumentBase() que usted se refiere.)

+0

Ver también mi pequeño [demo. del 'BasicService'] (http://pscode.org/jws/api.html#bs). –

+0

@aioobe - gracias por eso. Eso es para mi. Sin embargo, hice el siguiente código que me da la ruta completa al archivo JAR sin usar BasicService. MyClass.class.getProtectionDomain(). GetCodeSource(). GetLocation(). ToExternalForm() – Andez

+0

@Andez: Si ese código (presumiblemente se ejecuta en una aplicación de confianza.) proporciona la ubicación de los archivos de clase en el sistema de archivos local, no escriba nada allí, y no espere encontrar nada allí que no esté ya en la ruta de clases de la aplicación en tiempo de ejecución. ¿Por qué ** exactamente ** quieres esta información? ¿Qué característica es que saber esa ubicación trae a la aplicación? –

Cuestiones relacionadas