最近,接手了一份新活,為方便下游同學(xué)的使用,需要給他們做擋板。mock假數(shù)據(jù),完成常規(guī)版本正常邏輯的驗(yàn)證;
于是,想法是這樣的:
首先做一個(gè)擋板服務(wù),監(jiān)聽(tīng)下游請(qǐng)求,如若遇到約定的參數(shù)值,則直接走擋板服務(wù)。返回存儲(chǔ)在服務(wù)器上的數(shù)據(jù)文件即可,否則走正常的服務(wù)請(qǐng)求邏輯。
想法有了,且之前有做過(guò)類似的流量復(fù)制的工程,于是,想著直接套用原有工程代碼即可。
開(kāi)干;
首先,建立了一個(gè)maven工程,將需要的代碼copy過(guò)來(lái),直接改改,然后就開(kāi)始打包并部署服務(wù)器了。問(wèn)題來(lái)了
1.如何使用maven打jar包,出現(xiàn)打包后,無(wú)法直接運(yùn)行
原因有2:
1. maven依賴的jar未打入
2.lib下本地依賴的jar未打入
針對(duì)以上兩種,首先將lib下的jar安裝的本地的maven倉(cāng)庫(kù)
命令如下:mvninstall:install-file -Dfile=xx.jar ? ? -DgroupId=org.wltea.ik-analyzer ? ?-DartifactId=ik-analyzer ? ? ? ? -Dversion=3.2.8 -Dpackaging=jar
然后在pom文件中加入

第二步,在pom文件中加入如下內(nèi)容:

以上即可完成打包工作。
第二個(gè)問(wèn)題,發(fā)現(xiàn)請(qǐng)求無(wú)效,無(wú)論怎么做,均返回405.
發(fā)現(xiàn)原因在于未重寫post以及get方法。按照父類傳參重寫后正常。
第三個(gè)問(wèn)題,如何獲取到返回結(jié)果
需要將response添加一些結(jié)果,如下:
response.setHeader("Content-Type","application/octet-stream");
//設(shè)置返回的狀態(tài)碼
response.setStatus(HttpServletResponse.SC_OK);
response.setHeader("Content-Length",String.valueOf(res.length));
response.getOutputStream().write(res);
然后即可獲取結(jié)果了。
遇到最后一個(gè)問(wèn)題,也是最傻的一個(gè)問(wèn)題
我想著服務(wù)啟動(dòng)了,端口生效了,但是為什么我get不到請(qǐng)求呢
想了好久,終于明白了。我這是一個(gè)代理服務(wù)器,需要配置nginx才行。
比如監(jiān)聽(tīng)80端口下的請(qǐng)求,只有我請(qǐng)求80端口時(shí),且滿足我的判斷條件,才走我的邏輯。配置完成nginx后,驗(yàn)證,圓滿解決