有时在测试新业务流程时因为涉及多个不同接口的调用,而这些被调用的服务端因为网络权限或开发进度问题暂时对我们不可达,那么我们可以通过模拟接口返回来完成我们新业务的测试。这次碰到的问题是我明明起了该测试桩,业务流程发过去的请求发过去却一直没有响应而超时了,而且没有任何测试桩接口的日志,抓包也只看到调用的入口消息,真的是两眼一抹黑。折腾到最后发现是Tomcat配置问题:我在server.xml中新增加一个web服务用于测试桩:
<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false" deployOnStartup="false"> <Context path="/wlfServer" reloadable="false" docBase="../webapps/wlfServer" workdir="../work"/> </Host>
但是最大线程数却发现原来只配置为1:
<Connoctor port="8080" maxHttpHeadSize="8192" maxThreads="1" minSpareThreads="100" maxSpareThreads="125" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
这就导致Tomcat容器只能拉起一个线程起动本身我要跑的业务主流程,而我在该业务主流程里调用的测试桩流程却无法拉起来,只能等我的业务主流程得到调用测试桩超时这个结果后主流程结束,测试桩流程才能被拉起。所以从日志里看就很诡异了,主流程里测试桩流程全部超时,测试桩流程全部正常。修改maxThreads值大于1即可解决问题。