不使用Tomcat,手寫簡單的web服務
背景:
公司使用的YDB提供了http的查詢資料庫服務,直接通過url傳入sql語句查詢資料-_-||。ydb的使用參照:https://www.cnblogs.com/hd-zg/p/7115112.html
有的業務使用到了該功能。但ydb系統升級後,這個服務被遺漏了,導致使用到該功能的業務無法繼續使用該功能。為了解決這個問題,需要開發一個http服務來呼叫ydb的jdbc介面返回json資料。
鑑於這個工程只需要一個http介面,用tomcat感覺太重了,於是打算手寫一個簡單的http服務。
知識點:
這個過程涉及到寫服務,打包,執行,排錯等過程。
過程:在這裡把開發步驟在此列舉一下,以便後面遇到類似問題時,快速解決。具體步驟如下:
第一步:寫http服務
設定埠號,連線數,請求處理類。本過程中可能需要依賴其他jar包,可以放在與src平級的lib目錄下
public class Main { public static void main(String[] arg) throws Exception { HttpServer server = HttpServer.create(new InetSocketAddress(8001),1000); server.createContext("/test", new TestHandler()); server.start(); }static class TestHandler implements HttpHandler{ @Override public void handle(HttpExchange exchange) throws IOException { String response = "hello world"; exchange.sendResponseHeaders(200, 0); OutputStream os = exchange.getResponseBody(); os.write(response.getBytes()); os.close(); } } }
第二步:使用idea打成可執行jar包
1、設定Artifacts,使用jar,並選擇From modules with dependencies,否則依賴的jar包會丟失
2、設定Main Class,為jar包指定入口,設定的Main Class裡面必須要包含main方法
3、打包
第三步:執行
1、將打成的xxx.jar包放在linux伺服器的某個目錄下,如/home/xxx
2、執行命令啟動java -jar xxx.jar,這是最簡單的啟動命令,這樣寫的話,如果使用CTRL+C中斷了該命令,則服務就會掛了,因此需要後臺執行
3、後臺執行命令需要在java命令前面加上nohup命令,為了進一步檢視產生的日誌,可以使用如下命令:
nohup java -jar /home/xxx/xxx.jar > /home/xxx/log.out>&1 &
最後的&符號一定不能丟,否則ctrl+c時,服務還是會掛
維護:
使用過程成需要重啟,看日誌等
重啟,即檢視程序、殺程序、重新執行
看日誌,日誌在啟動時指定了日誌路徑