1. 程式人生 > >不使用Tomcat,手寫簡單的web服務

不使用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時,服務還是會掛

 

維護:

使用過程成需要重啟,看日誌等

重啟,即檢視程序、殺程序、重新執行

看日誌,日誌在啟動時指定了日誌路徑