2012-03-01 47 views
5

我需要運行Jetty,指定war文件並將其由Jetty解壓到特定位置。 Jetty的常見行爲是採用TEMP目錄或JETTY_HOME/work目錄並將war-file解壓縮到如下所示的子文件夾中:jetty-HOST-PORT-CONTEXT.war -_- any- 這對我們來說絕對是不合適的因爲PORT部分是隨機的。 War-file必須由Jetty解包,目的地必須100%靈活。碼頭:將.war解壓到特定文件夾

可能嗎?請指教。碼頭不是我的專業領域,請原諒我,如果問題是跛腳或微不足道的,但谷歌搜索沒有多大幫助。

非常感謝!

+0

http://wiki.eclipse.org/Jetty/Howto/Deploy_Web_Applications#Deploying_Webapps? – Jayan 2012-03-01 17:05:37

+0

你能否解釋_爲什麼你需要這種行爲?我有一種感覺,你正試圖解決錯誤的問題... – Tim 2012-03-02 01:42:59

+0

@Tim有一個應用程序必須以下列方式啓動碼頭:命令啓動碼頭PORT路徑到戰爭文件路徑 - 在哪裏-to-把提取的戰爭文件。 應用程序控制工作人員並在開始時設置隨機可用端口。 – Slava 2012-03-02 11:28:38

回答

5

謝謝大家。我已經成功地實現了與下面的代碼擴展碼頭的要求:

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調用使碼頭解壓戰爭文件到自定義文件夾。我還沒有找到任何其他方式,但該解決方案適合我。

1

(未嘗試過,只需從wiki頁面閱讀jetty wiki) 您可以將戰爭提取到預定義的目錄。然後將該文件夾作爲setWar參數提供。

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

謝謝。這可以通過配置文件嗎? – Slava 2012-03-02 11:34:47

相關問題