不使用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(),100);
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(, );
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时,服务还是会挂
维护:
使用过程成需要重启,看日志等
重启,即查看进程、杀进程、重新运行
看日志,日志在启动时指定了日志路径
不使用Tomcat,手写简单的web服务的更多相关文章
- tomcat+webservice实现简单的web服务远程调用接口
1,准备工作: ①需要使用到jaxws的一系列架包,网址:http://jax-ws.java.net,我下的是比较新的一个版本(下载好以后吧架包发在lib下),②webservice的一个工具 ...
- linux系统下开启一个简单的web服务
linux 下开启一个简单的web服务: 首先需要linux下安装nodejs 然后创建一个test.js: vi test.js var http =require("http&quo ...
- node创建一个简单的web服务
本文将如何用node创建一个简单的web服务,过程也很简单呢~ 开始之前要先安装node.js 1.创建一个最简单的服务 // server.js const http = require('http ...
- nodejs创建一个简单的web服务
这是一个突如其来的想法,毕竟做web服务的框架那么多,为什么要选择nodejs,因为玩前端时,偶尔想调用接口获取数据,而不想关注业务逻辑,只是想获取数据,使用java或者.net每次修改更新后还要打包 ...
- 手写简单call,apply,bind
分析一下call的使用方法:call是显示绑定this指向,然后第一个参数是你所指向的this对象,后面跟着多个参数,以逗号隔开 function sum(num1,num2){ return num ...
- 深入剖析tomcat之一个简单的web服务器
这个简单的web服务器包含三个类 HttpServer Request Response 在应用程序的入口点,也就是静态main函数中,创建一个HttpServer实例,然后调用其await()方法. ...
- 手写内网穿透服务端客户端(NAT穿透)原理及实现
Hello,I'm Shendi. 这天心血来潮,决定做一个内网穿透的软件. 用过花生壳等软件的就知道内网穿透是个啥,干嘛用的了. 我们如果有服务器(比如tomcat),实际上我们在电脑上开启了服务器 ...
- 使用python命令构建最简单的web服务
可以使用python自带的包建立最简单的web服务器,使用方法: 1)切换到服务器的根目录下 2)输入命令: python -m SimpleHTTPServer 3)使用wget或者在浏览器访问测试 ...
- 基于gin框架搭建的一个简单的web服务
刚把go编程基础知识学习完了,学习的时间很短,可能还有的没有完全吸收.不过还是在项目中发现知识,然后在去回顾已学的知识,现在利用gin这个web框架做一个简单的CRUD操作. 1.Go Web框架的技 ...
随机推荐
- JS判断备忘
快速引入jquery并显示重点内容 (function(d,j,s,t){t=d.body.appendChild(d.createElement("script"));t.onl ...
- VS2013 “未找到与约束 ContractName Microsoft.Internal.VisualStudio.PlatformUI.ISolutionAttachedCollectionService RequiredTypeIdentity Microsoft.Internal.VisualStudio.PlatformUI.ISolutionAttachedCollectionService 匹配的导出”
下面是我出错误的附加图片 这个错误导致无法打开项目. 解决方法: 解: C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\12.0 ...
- PowerMock用法[转]
转:http://agiledon.github.io/blog/2013/11/21/play-trick-with-powermock/ 当我们面对一个遗留系统时,常见的问题是没有测试.正如Mic ...
- node中的__dirname
先说结论:__dirname指的是当前文件所在文件夹的绝对路径. 测试路径如下: 即 根目录/dir0.js 根目录/path1/dir1.js 根目录/paht1/path2/dir2.js 每个d ...
- php mongodb扩展 其他扩展也类似
MongoDBPHP 扩展 本教程将向大家介绍如何在Linux.window.Mac平台上安装MongoDB扩展. Linux上安装 MongoDB PHP扩展 在终端上安装 你可以在linux中执行 ...
- laravel5.6 后台无法退出,必须清楚浏览器缓存才能退出
方法一: 在后台,admin/logincontroleer.php 中 可行 public function logout(Request $request) { Auth::logout(); ...
- Elasticsearch cat Apis
1._cat列入所有有效命令 GET /_cat 返回:有个猫...所以不难想象为啥是cat api =^.^= /_cat/allocation /_cat/shards /_cat/shards/ ...
- 洛谷 P2906 [USACO08OPEN]牛的街区Cow Neighborhoods | Set+并查集
题目: https://www.luogu.org/problemnew/show/P2906 题解: 垃圾水题 #include<cstdio> #include<algorith ...
- BZOJ1202 [HNOI2005]狡猾的商人 【并查集】
1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4180 Solved: 2015 [Submit][S ...
- HDOJ.1029 Ignatius and the Princess IV(map)
Ignatius and the Princess IV 点我跳转到题面 点我一起学习STL-MAP 题意分析 给出一个奇数n,下面有n个数,找出下面数字中出现次数大于(n+1)/2的数字,并输出. ...