zoukankan      html  css  js  c++  java
  • 不使用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时,服务还是会挂

    维护:

    使用过程成需要重启,看日志等

    重启,即查看进程、杀进程、重新运行

    看日志,日志在启动时指定了日志路径

  • 相关阅读:
    外观模式
    享元模式
    c#中的抽象类和接口
    装饰者模式
    组合模式
    适配器模式
    springboot 源码篇002## web层自动装配部分源码
    springboot 源码篇002## 自动装配原理
    springboot 源码篇 01
    shell 脚本基础 第二篇
  • 原文地址:https://www.cnblogs.com/aligege/p/9961718.html
Copyright © 2011-2022 走看看