Windows 上的 Jetty 小工具

作項目常常遇到須要開發Java應用,我喜歡用Jetty進行開發、部署,主要是因爲Jetty的輕量級。html

Jetty 項目主頁:http://www.eclipse.org/jetty/, 最新版9.30剛剛添加對 HTTP/2的支持。java

可是Jetty在Windows下部署不是很方便,須要用命令行。git

每次都要使用命令行,非常麻煩,因而我打算作一個Jetty的小工具,把命令行操做封裝一下,能夠在GUI中啓動、中止Jetty,能夠配置經常使用參數等。github

完成以後的界面以下:web

測試代碼下載spring

編譯好的可執行文件:瀏覽器

JettyMonitor-v0.1-alpha-x64.7z JettyMonitor-v0.1-alpha-x86.7z服務器

注意須要安裝.NET Framework 4.5.2:app

開發人員安裝Dev Pack:http://www.microsoft.com/en-us/download/details.aspx?id=42637eclipse

最終用戶安裝運行時:http://www.microsoft.com/en-us/download/details.aspx?id=42642

 

 

Java Home :常常作Java開發的朋友一看就知道是JDK的目錄。

這些目錄在點擊保存配置後保存在配置文件裏:

第一次運行時還能夠從環境變量中查找:

EnvironmentUtil 是一個環境變量幫助類,便於對環境變量進行各類操做,具體細節請參見源碼。

 

Jetty Home:指解壓縮後的Jetty目錄:

那麼Jetty Base 是什麼呢?官方文檔上有介紹:http://www.eclipse.org/jetty/documentation/current/quickstart-running-jetty.html

A jetty base allows the configuration and web applications of a server instance to be stored separately from the jetty distribution, so that upgrades can be done with minimal disruption.

Jetty Base 目錄是一個應用的單獨存儲目錄,能夠與Jetty Home主目錄的配置不相同。這樣帶來了一個顯著的好處,之後升級Jetty版本時對原有應用的影響很小。

Jetty Base Jetty 9.1版本才引入的,很是新。

Jetty 的官方部署建議是新創建一個Jetty Base部署,而不是把war包等直接放到Jetty Home主目錄的webapps目錄中。

本地端口是Jetty的Web端口,默認是8080,。遠程端口是遠程調試用的,能夠不開啓。

常規運行的命令是:java -jar start.jar jetty.http.port=8080

藉助JVM進行遠程調試的命令是:java -Xdebug -agentlib:jdwp=transport=dt_socket,address=9000,server=y,suspend=n -jar start.jar jetty.http.port=8080

 

咱們來整理一下Jetty部署的步驟:

一、選擇一個目錄Jetty Base目錄中,進入該目錄。

二、初始化Jetty Base目錄:java -jar %JETTY_HOME%/start.jar --add-to-startd=http,deploy

--add-to-startd 參數負責初始化須要的Jetty模塊,Jetty有不少模塊,位於:%JETTY_HOME%/modules

根據須要進行添加,我是用Spring MVC開發的,添加了這些模塊:--add-to-startd=http,deploy,spring,servlet,servlets,webapp,jsp,jstl,server

除了--add-to-startd命令,Jetty還有不少命令,能夠輸入:java –jar start.jar –help 查看:

 

初始化完成後Jetty Base目錄下生成兩個目錄:

其中start.d保存模塊的配置文件:

 

webapps用來放置發佈的war包等:

三、運行java –jar start.jar啓動Jetty

 

我把這三個步驟整合到一個批處理中,便於用程序處理:

cd /d "D:\Publish\JettyBase"

"C:\Program Files\Java\JDK8\bin\java.exe" -jar "D:\Developer\Server\Application\Jetty\Jetty9\start.jar" --add-to-startd=http,deploy,spring,servlet,servlets,webapp,jsp,jstl,server

"C:\Program Files\Java\JDK8\bin\java.exe" -Xdebug -agentlib:jdwp=transport=dt_socket,address=9000,server=y,suspend=n -jar "D:\Developer\Server\Application\Jetty\Jetty9\start.jar" jetty.http.port=8080

 

啓動Jetty時使用Process執行批處理:

注意要啓用重定向標準輸出與標準錯誤,才能獲取到批處理的執行結果:

啓動成功:

打開瀏覽器測試一下:

在IDE中能夠很方便的設置遠程調試:

能夠直接在配置命令行中編輯批處理的內容,編輯完後保存:

配置文件保存在小工具同一目錄中:

 

中止Jetty時須要注意,由於咱們使用Process執行批處理啓動的Jetty,即用cmd.exe 啓動了Jetty的Java進程,Java進程做爲cmd的子進程駐留,不能直接用process.Close()關閉。

這裏咱們再用Process執行dos命令來殺掉全部的Jetty進程:TASKKILL /F /PID xxx /T

/F 是強制殺掉,/PID 指定進程ID, /T 是殺掉全部子進程:

所以這樣來中止Jetty:

執行結果:

 

小結:

這樣,咱們就能夠不用在純命令行界面中操做了,並且配置能夠保存、自定義,能夠查看啓動、中止日誌等。

修改一下配置也能夠適用於其餘Java服務器。

相關文章
相關標籤/搜索