weblogic12.2.1.3 + Eureka Server Jar包冲突问题的解决方案

本文详细介绍了在WebLogic 12.2.1.3中部署Eureka Server时遇到的两大问题:双重Basic Auth和Jersey版本冲突。解决方案包括关闭WebLogic的Http Basic Auth,排除Eureka的Jersey1.x依赖,以及添加和配置jsr311-api。此外,还提供了一种不修改配置的解决双重认证问题的方法,即设置相同用户名和密码。
摘要由CSDN通过智能技术生成

坑的前世今生

不算近期的近期,开发了一个项目,具体功能和这个坑没什么关系,就不说了。使用了Spring Boot 2.1.6.RELEASE作为项目脚手架,Eureka作为注册中心。作为一个使用微服务的项目,通常的启动方式都是将服务打成jar包,然后通过docker部署启动,如果是这样,就没有后面的坑了,可惜天不遂人愿,客户要求必须使用WebLogic作为服务的容器中间件,于是坑来了……

当WebLogic遇上Eureka

  1. WebLogic版本:12.2.1.3
  2. JDK:1.8
  3. Spring Boot:2.1.6.RELEASE
  4. Spring Cloud:Greenwich.SR2

坑大:双重Basic Auth

其实坑还是很狡猾的,一开始并没有出现,创建新的maven模块,添加eureka-server依赖,打成war包,部署启动,一切都正常,very good!so easy!!
然而打脸来的就是如此之快,按照客户需求,需要为注册中心增加鉴权。鉴权么,我选择了spring security,增加配置,打包部署启动,看起来挺正常。当启动其他服务去注册的时候,第一个坑来了,认证过!不!去! 于是开始检查配置,检测用户名密码,都没问题,服务死活注册不上,注册中心就是放行,折腾了几次之后发现问题所在了!是WebLogic自己默认也开启了Http Basic Auth!,服务注册进行认证的时候,需要先经过WebLogic的认证,只有这一层通过后,才能到达应用进行真正服务注册鉴权……
为了解决问题,翻遍了WebLogic控制台,也没找到关闭认证的地方,最后是百度一下找到了一个办法,修改domain中的配置,具体的办法如下:

  1. 在域的config/config.xml中,找到security-config节点
  2. 在该节点内增加以下配置项
<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>
  1. 重启域
    完成以上步骤,本以为该一切顺利然后就能溜之大吉了,结果更深的坑二不甘寂寞的跳了出来……

坑二:Jersey1.x与Jersey2.x的斗争

本来是为了解决问题,结果引出了更大的问题……
调整了config.xml,关闭了WebLogic的Basic Auth之后,注册中心起不来了!报错如下:

weblogic.application.ModuleException: java.lang.NoClassDefFoundError: Could not initialize class org.glassfish.jersey.media.sse.SseFeature
java.lang.NoClassDefFoundError: Could not initialize class org.glassfish.jersey.media.sse.SseFeature

一开始以为是增加了配置导致的,所以把配置又给改回去了,结果,改回去重启后,问题依旧。折腾无果后,求助WebLogic工程师帮助定位问题,几个小时后,罪魁祸首被揪出来了!原来是WebLogic中使用了Jersey2.x版本,会使用自带的javax.ws.rs-api,而Eureka-Server是基于Jersey1.19开发的,使用的是jsr311-api࿰

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值