# 背景
最近参与的一个新的需求,遇到一些问题,简单记录一下。
简要说明,新需求需要整合两个 service:
- 一个是 springboot + bootstrap vue,我们并不是该项目 owner,仅做一些业务植入
- 一个是 python flask + vue element,这是我们自己的主要项目之一,处理实际业务
前端的一部分从 vue element 移植到 bootstrap vue,并在 bootstrap vue 端增加部分新页面
后端以 springboot 做 proxy,请求转发到 python,具体业务实现在 python 端
# 问题
- idea download source code Connection refused to host: 127.0.0.1; nested exception is
- 参考: https://stackoverflow.com/questions/68348626/fix-intellij-idea-download-sources-connection-refused-to-host-127-0
-0-1-error - 解决: 修改 JDK for importer
- Get request body from HttpServletRequest
- 参考: https://stackoverflow.com/questions/8100634/get-the-post-request-body-from-httpservletrequest
- 解决: String test = request.getReader ().lines ().collect (Collectors.joining (System.lineSeparator ()));
- 其他: getInputStream ()
- @Value 注入属性与 final 修饰问题
- 参考: https://stackoverflow.com/questions/65797536/why-java-final-variables-cannot-be-assigned-a-value-in-the-setter
-method - 原因: 属性注入时机
- 解决:
private final String HOST;
public XxxServiceImpl(@Value("${api.url.xxx.endpoint.host}") String url){
this.HOST = url;
}
- 为什么无法从 HttpServletRequest 读取多次 body
- 参考: https://stackoverflow.com/questions/71997116/why-can-the-body-of-the-httpservletrequest-not-be-read-multiple-times
- 原因: 性能,内存方便的优化
- 办法: 自定义 RequestWrapper 类继承 HttpServletRequestWrapper,作为请求拦截器,在该类定义成员变量 cache body 属性,或者继承 OncePerRequestFilter 重写 doFilterInternal 方法等等
- tomcat 首页访问 Manager App 报 403
- 原因: 因为安全因素,tomcat 默认限制非本机用户访问
- 解决: 修改 apache-tomcat-8.5.84/webapps/manager/META-INF/context.xml,注释掉 127 那个标签
- tomcat 修改端口,多 tomcat 共存场景
- 解决: 修改 apache-tomcat-8.5.84/conf/server.xml,8005/8080/8009,统一 + 1
- Caused by: java.lang.ClassNotFoundException: javax.servlet.Filter
- 原因:缺少 tomcat servlet-api.jar,直接原因,maven 引入该包 scope 是 provided,不是 compile
- 解决:注释 scope 或者在 idea 种启用 Include dependencies with "Provided" scope
# 参考
https://www.baeldung.com/spring-reading-httpservletrequest-multiple-times