最近,接手了一份新活,为方便下游同学的使用,需要给他们做挡板。mock假数据,完成常规版本正常逻辑的验证;
于是,想法是这样的:
首先做一个挡板服务,监听下游请求,如若遇到约定的参数值,则直接走挡板服务。返回存储在服务器上的数据文件即可,否则走正常的服务请求逻辑。
想法有了,且之前有做过类似的流量复制的工程,于是,想着直接套用原有工程代码即可。
开干;
首先,建立了一个maven工程,将需要的代码copy过来,直接改改,然后就开始打包并部署服务器了。问题来了
1.如何使用maven打jar包,出现打包后,无法直接运行
原因有2:
1. maven依赖的jar未打入
2.lib下本地依赖的jar未打入
针对以上两种,首先将lib下的jar安装的本地的maven仓库
命令如下:mvninstall:install-file -Dfile=xx.jar -DgroupId=org.wltea.ik-analyzer -DartifactId=ik-analyzer -Dversion=3.2.8 -Dpackaging=jar
然后在pom文件中加入
第二步,在pom文件中加入如下内容:
以上即可完成打包工作。
第二个问题,发现请求无效,无论怎么做,均返回405.
发现原因在于未重写post以及get方法。按照父类传参重写后正常。
第三个问题,如何获取到返回结果
需要将response添加一些结果,如下:
response.setHeader("Content-Type","application/octet-stream");
//设置返回的状态码
response.setStatus(HttpServletResponse.SC_OK);
response.setHeader("Content-Length",String.valueOf(res.length));
response.getOutputStream().write(res);
然后即可获取结果了。
遇到最后一个问题,也是最傻的一个问题
我想着服务启动了,端口生效了,但是为什么我get不到请求呢
想了好久,终于明白了。我这是一个代理服务器,需要配置nginx才行。
比如监听80端口下的请求,只有我请求80端口时,且满足我的判断条件,才走我的逻辑。配置完成nginx后,验证,圆满解决
网友评论