xutils3中Https的hostName验证的jar包改造

需求:

之前项目里有个xutils3框架进行网络交互,现在需要改造全栈HTTPS,Android端本地需要验证https的hostname等信息,

实现:

我需要对于xutils3进行代码改造,先从网上找到xutils3的代码,然后进行代码定位及改造

废话不多,先上代码:


先看改造的入口




很简单,我再其中加入一个isdebuger的方法,打印hostname日志信息,

然后使用一个hostnames集合,这个集合是用来装入https等待验证的hostname,其中有一个匹配则返回true;验证通过,

而源生的xutils3是默认全部return true不验证hostName的


用法:

//添加等待验证的hostName


//设置日志模式,请在打包时设置成false(关闭日志)



点击下载jar包


(如果想看源码请翻阅最底)


如果还行看xutils线程池分离的请往下看

---------------------------------------------分切线-------------------------------------------------------


需求:

日志服务器跟业务层服务器是分离的,如果日志跟业务层共用一个线程池,我们担心日志服务器线程阻塞导致。影响业务层的接口响应速度.

实现:

所以我们应该对日志服务器跟业务服务器做一个线程池分离,(日志服务器调用A线程池,业务服务器调用B线程池);


话不多say,看代码:

定位到请求发送的cls

发现以下代码:


这个http_executor就是http请求的线程池,我在下面加入一个log_executor线程池。

cache_executor是一个缓存callback调用的线程池,处理缓存请求的,我们暂时不管。

改造开始:


我们只需要加个三目运算,然后请求时候指定这是否是个logrequest就可以。。。。

so easy。。。

然后我们改造完成后makeJar进行打包。

然后我们看看用法:

只要在你的requestParams里调用

setLogRequest()即可,true代表是调用log线程池,false调用http业务层线程池



如果需要这套线程池分离,请自己打包,如果不知道源码打包,很简单,在as底部工具栏有个叫Terminal里输入makeJar就能打包。

源码下载


<think>好的,我需要解决用户在WebLogic服务器中遇到的BEA-090563错误,具体是无法创建Hostname Verifier实例,并且伴随类未找到异常。用户提到了涉及weblogic.security.utils.SSLWLSHostnameVerifier.DefaultHostnameVerifier类的ClassNotFoundException。我需要结合用户提供的引用内容,以及之前的回答,来构建解决方案。首先,回顾用户提供的引用内容。引用[1]提到MyEclipse配置的Server名称与Weblogic域中的不一致,可能需要修改配置文件。虽然这可能与当前的SSL问题不直接相关,但需要注意配置一致性。引用[2]指出BEA-090975错误是由于系统时间错误导致Nonce过期,这可能与SSL证书的时间有效性有关联,需要检查系统时间是否正确。引用[3]涉及文件锁问题,可能影响服务器启动,但当前问题更可能出现在类加载或配置上。之前的回答中,用户已经得到了一些解决方案,括检查缺失的JAR、调整类加载策略、验证补丁一致性、检查SSL配置和日志分析。现在需要结合这些信息,并考虑用户的新引用内容,进一步细化解决方案。 首先,BEA-090563错误直接原因是无法实例化Hostname Verifier类,具体是DefaultHostnameVerifier类未找到。这可能是因为类路径中缺少相关JAR,或者类加载器未能正确加载该类。需要确认以下几点:1.**确认JAR存在性**:检查WebLogic的安装目录下的相关JAR文件,特别是含SSLWLSHostnameVerifier类的模块。可能需要检查wlthint3client.jar、weblogic.jar等是否存在,并且版本正确。 2. **类加载器冲突**:WebLogic的类加载策略可能导致第三方库或应用覆盖了WebLogic自身的类。需要调整类加载优先级,确保WebLogic的类优先加载。这可能涉及修改weblogic.xml中的prefer-application-packages配置。3.**补丁和版本一致性**:不同服务器间的补丁版本不一致可能导致某些类缺失。需要检查所有服务器上的WebLogic版本和已安装补丁是否一致,使用OPatch工具进行验证。4.**SSL配置检查**:在WebLogic控制台中确认SSL配置是否正确,特别是主机名验证设置。错误的配置可能导致无法正确初始化Hostname Verifier。5.**系统时间和证书有效性**:引用[2]提到的系统时间错误可能导致证书验证失败,需要检查服务器时间是否与证书的有效期匹配,以及NTP配置是否正确。6.**配置文件中的服务器名称**:引用[1]指出服务器名称不一致可能导致问题,虽然当前问题与SSL相关,但需要确保所有配置文件中服务器名称一致,避免其他潜在问题。 接下来,需要将这些点整合成一个结构化的解决方案,并参考之前的回答进行补充。例如,在之前的回答中提到了补丁检查和JAR确认,这里需要更详细地结合用户提供的引用内容,比如系统时间的影响,以及服务器名称配置的潜在问题。 此外,用户提到的ClassNotFoundException可能不仅仅是类路径问题,还可能涉及类加载器的委托机制。需要确保WebLogic的类加载器能够正确找到并加载所需的类,可能需要调整类加载策略,优先加载WebLogic自身的模块。 在生成解决方案时,需要分步骤说明,括检查步骤、配置调整、补丁管理和日志分析等。同时,需要引用用户提供的引用内容,如引用[2]的系统时间检查,引用[1]的服务器名称配置,以及引用[3]的锁文件问题(虽然当前问题可能不涉及,但可以作为补充检查点)。 最后,生成相关问题,帮助用户扩展可能遇到的关联问题,如类加载冲突的其他表现、SSL配置的其他错误等。</think>### WebLogic BEA-090563 Hostname Verifier实例创建失败解决方案 针对`BEA-090563`错误(无法创建`SSLWLSHostnameVerifier.DefaultHostnameVerifier`实例)及`ClassNotFoundException`问题,结合引用内容和系统级排查,以下是具体解决步骤: --- #### **1. 确认核心JAR完整性** - **问题根源**:`DefaultHostnameVerifier`类位于`wlthint3client.jar`中,若缺失或损坏将导致类加载失败。 - **操作步骤**: 1. 进入WebLogic安装目录,检查以下JAR是否存在: ```bash $WL_HOME/server/lib/wlthint3client.jar # 含SSL相关类 $WL_HOME/modules/features/weblogic.server.merged.jar ``` 2. 对比正常服务器,若发现缺失,从其他环境复制或通过补丁修复[^4]。 3. 重启WebLogic服务。 --- #### **2. 调整类加载优先级** - **问题根源**:应用类加载器可能覆盖WebLogic核心类。 - **操作步骤**: 1. 在应用部署的`WEB-INF/weblogic.xml`中添加以下配置,强制优先加载WebLogic的类: ```xml <container-descriptor> <prefer-application-packages> <package-name>weblogic.security.utils.*</package-name> <!-- 关键名 --> <package-name>weblogic.utils.*</package-name> </prefer-application-packages> </container-descriptor> ``` 2. 清理临时目录并重启服务器: ```bash rm -rf $DOMAIN_HOME/servers/AdminServer/tmp/* ``` --- #### **3. 验证系统时间与证书有效期** - **问题根源**:引用[2]中`BEA-090975`错误表明系统时间错误可能影响SSL握手[^2]。 - **操作步骤**: 1. 检查服务器时间是否与证书有效期匹配: ```bash date # 查看当前时间 openssl x509 -in server.crt -noout -dates # 检查证书有效期 ``` 2. 同步NTP时间: ```bash ntpdate pool.ntp.org ``` --- #### **4. 检查SSL配置与服务器名称一致性** - **问题根源**:引用[1]中服务器名称不一致可能导致配置混乱[^1]。 - **操作步骤**: 1. 修改`config.xml`确保Server名称一致: ```xml <!-- 路径:$DOMAIN_HOME/config/config.xml --> <server> <name>AdminServer</name> <!-- 与MyEclipse配置一致 --> </server> ``` 2. 进入WebLogic控制台,导航至 **环境 > 服务器 > [目标服务器] > SSL**: - 确认 **主机名验证** 设置为`BEA Hostname Verifier`。 - 检查证书别名和信任链是否完整。 --- #### **5. 补丁与版本一致性检查** - **操作步骤**: 1. 使用OPatch检查补丁版本: ```bash $ORACLE_HOME/OPatch/opatch lsinventory ``` 2. 若存在补丁差异,从Oracle官网下载最新补丁并应用: ```bash opatch apply <patch_id> ``` --- #### **6. 调试与日志分析** - **操作步骤**: 1. 启用SSL调试模式(`setDomainEnv.sh`中添加): ```bash JAVA_OPTIONS="-Dssl.debug=true -Dweblogic.StdoutDebugEnabled=true" ``` 2. 分析`server.log`,定位`ClassNotFoundException`的完整堆栈。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值