2012-03-01 23 views
5

Potrzebuję uruchomić Jetty, określ plik wojenny i rozpakuj go przez Jetty w określone miejsce. Typowym zachowaniem Jetty jest pobranie katalogu TEMP lub katalogu JETTY_HOME/work i rozpakowanie pliku wojny do podfolderu o następującej nazwie: jetty-HOST-PORT-CONTEXT.war -_- any- Jest to absolutnie niewłaściwe dla naszego środowisko, ponieważ część PORT jest losowa. Plik wojenny musi zostać rozpakowany przez Jetty, a miejsce docelowe musi być w 100% elastyczne.Pomost: rozpakuj plik .war do określonego folderu

Czy to możliwe? Proszę o poradę. Molo nie jest moją specjalnością, wybacz mi, jeśli pytanie jest kulawe lub trywialne, jednak googlowanie niewiele mi pomogło.

Dziękuję bardzo!

+0

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

+0

Czy możesz wyjaśnić, dlaczego potrzebujesz tego zachowania? Mam wrażenie, że próbujesz rozwiązać niewłaściwy problem ... – Tim

+0

@Tim jest aplikacja, która musi uruchomić pomost w następujący sposób: command-to-start-jetty PORT ścieżka-do-wojny-plik-ścieżka-gdzie -to-put-extract-war-file. Aplikacja przejmuje kontrolę nad pracownikami i ustawia losowy dostępny port na starcie. – Slava

Odpowiedz

5

Dziękuję wszystkim. Udało mi się osiągnąć wymóg rozciągający Jetty z następującego kodu:

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 wywołanie wojny sprawia Jetty rozpakować plik do niestandardowego folderu. Nie znalazłem żadnej innej metody, ale rozwiązanie pasuje do mnie.

1

(Nie wypróbowano go, po prostu czytając ze strony wiki jetty wiki) Można wyodrębnić wojnę do wstępnie zdefiniowanej linii. A następnie podaj ten folder jako argument setWar.

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

Dziękuję. Czy to możliwe dzięki plikom konfiguracyjnym? – Slava

Powiązane problemy