2020 nga tuig 11 bulan

最近出现一个问题,部署在weblogic的war包,启动后,除了Spring的标示日志,就没有其他日志。
百思不得其解,就开始排查

  1. 开始排查了logback.xml,以为是配置问题 -> 使用可正常打印的war包的logback.xml配置:排除这个问题
  2. 后面排查weblogic.xml,以为是包优先加载的问题 -> 加入对应包设置,依旧无效:排除问题
  3. 开始怀疑是maven包引用问题,排查pom.xml
    发现包里有一个
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>
取消引入,解决

按道理,微服务应该jar包+docker/k8s的方式运行,但总有这么个操蛋时候需要通过war包运行
那这时候小葵花妈妈课堂开课啦~
踩过的坑就要为后面的铺平道路

Eureka Client配置更改

# Tomcat/Weblogic的服务端口
server.port=8080
# 注册的服务名,这个要和你的war包名称一致
# 比如文件是demo.war,那么这里就是demo
wl.name=demo
# 应用名称
spring.application.name=${wl.name}
# 指定服务的请求路径前缀
server.servlet.context-path=/${wl.name}
eureka.instance.prefer-ip-address=true
# 设置eureka server的注册地址
# 需要注意的是,后面的‘/eureka/eureka/’,
# 这里前面的/eureka/是固定写法,后面的‘eureka/’是eureka server部署在容器里面的context-path
eureka.client.service-url.defaultZone=http://10.1.24.227:${server.port}/eureka/eureka/
eureka.instance.hostname=${wl.name}
# 微服务路径前缀
eureka.instance.home-page-url-path=/${wl.name}
# 设置eureka client的地址
eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port}/${wl.name}
#心跳时间/服务续约间隔时间(默认30s)
eureka.instance.lease-renewal-interval-in-seconds=10
#发呆(无心跳淘汰时间)时间/服务续约到期时间(默认90s)
eureka.instance.lease-expiration-duration-in-seconds=20
#健康检查
eureka.client.healthcheck.enabled=true

Feign 配置

@FeignClient(
    # 服务名 spring.application.name
    name = "demo",
    # 服务路径前缀 server.servlet.context-path
    path = "/demo")
public interface DemoFeign {
    // xxxx实际业务
}
重要提醒,如果你的war包没有设置context-root,那么你的war包名称就要和spring.application.name保持一致
这样就可以正常被访问了
下课~