程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Windows 上的 Jetty 小工具,windowsjetty工具

Windows 上的 Jetty 小工具,windowsjetty工具

編輯:C#入門知識

Windows 上的 Jetty 小工具,windowsjetty工具


做項目經常遇到需要開發Java應用,我喜歡用Jetty進行開發、部署,主要是由於Jetty的輕量級。

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

但是Jetty在Windows下部署不是很方便,需要用命令行。

每次都要使用命令行,很是麻煩,於是我打算做一個Jetty的小工具,把命令行操作封裝一下,可以在GUI中啟動、停止Jetty,可以配置常用參數等。

完成之後的界面如下:

測試代碼下載

編譯好的可執行文件:

JettyMonitor-v0.1-alpha-x64.7z JettyMonitor-v0.1-alpha-x86.7z

注意需要安裝.NET Framework 4.5.2:

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

最終用戶安裝運行時: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部署的步驟:

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

2、初始化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包等:

3、運行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服務器。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved