2012-03-01 9 views
5

Necesito ejecutar Jetty, especificar war-file y Jetty debe desempacarlo en una ubicación específica. El comportamiento común de Jetty es tomar el directorio TEMP o el directorio JETTY_HOME/work y descomprimir el archivo war en una subcarpeta llamada así: jetty-HOST-PORT-CONTEXT.war -_- any- Esto es absolutamente inapropiado para nuestro entorno porque la parte PORT es aleatoria. War-file debe ser desempaquetado por Jetty y el destino debe ser 100% flexible.Embarcadero: desempaquetar .war en la carpeta específica

¿Es posible? Por favor aconséjame. Jetty no es mi área de especialización, perdóneme si la pregunta es coja o trivial, sin embargo, Google no ayudó mucho.

¡Muchas gracias!

+0

http://wiki.eclipse.org/Jetty/Howto/Deploy_Web_Applications#Deploying_Webapps? – Jayan

+0

¿Puedes explicar por qué necesitas este comportamiento? Tengo la sensación de que estás tratando de resolver el problema equivocado ... – Tim

+0

@Tim hay una aplicación que debe comenzar en el embarcadero de la siguiente manera: command-to-starting-jetty ruta de acceso PORT-to-war-file path-where -to-put-extracted-war-file. La aplicación toma el control de los trabajadores y establece el puerto aleatorio disponible al inicio. – Slava

Respuesta

5

Gracias a todos. Me las he arreglado para cumplir el requisito que se extiende embarcadero con el siguiente código:

int port = 8080; 
String context_path = "/"; 
File tmp_directory = "C:\\some-custom-path\\"; 
String war_path = "C:\\path-to-a\\file.war"; 

WebAppContext app = new WebAppContext(); 
app.setContextPath(context_path); 
app.setWar(war_path); 
app.setTempDirectory(tmp_directory); 

Server server = new Server(port); 
server.setHandler(app); 
server.start(); 
server.join(); 

app.setTempDirectory llamada hace embarcadero desempaquetar guerra archivo en la carpeta personalizada. No he encontrado otra salida, pero la solución me viene bien.

1

(no lo intenté, simplemente leyendo de la página wiki jetty wiki) Podrías sacar la guerra a un directorio predefinido. Y luego proporcione esa carpeta como argumento setWar.

Server server = new Server(8080); 
    WebAppContext webapp = new WebAppContext(); 
    webapp.setContextPath("/"); 
    webapp.setWar(jetty_home+"/webapps/testlocation/"); 
    server.setHandler(webapp); 
+0

Gracias. ¿Es eso posible a través de archivos de configuración? – Slava

Cuestiones relacionadas