VMWare vijava –“用户名或密码不正确”异常的奇怪情况

在我参与的一个项目中,我们使用yavijava (这是vijava的一个分支)库与托管我们的VM的vCenter进行交互。 vCenter通过其Web服务端点公开了各种API,这些端点是通过HTTP调用的。 yavijava库具有必要的钩子,允许开发人员在客户端使用他们选择的HTTP客户端库来处理对vCenter的调用。

在我们的集成中,我们插入了Apache HTTP客户端库 ,以便yavijava调用内部最终使用此HTTP库进行交互。 一切正常,我们能够调用vCenter API。 我主要说的是,因为我们偶尔会不断看到如下异常:

InvalidLogin:由于用户名或密码错误,无法完成登录。

这令人感到困惑,因为我们完全确定用于与vCenter交互的用户名和密码正确。 特别是由于以前的所有调用都进行得很好,因此在我们开始看到这些异常之前。

异常stacktrace没有包含任何更有用的东西,其他任何日志也没有。 因此,剩下的唯一选择就是去查看vCenter(服务器端)事件日志,看看是否能找到一些东西。 幸运的是,我可以访问具有vSphere Client的设置,然后将其用于连接到vCenter。 vSphere Client允许您查看在vCenter上生成的事件日志。

查看日志,显示出一些有趣且有用的东西。 每次,我们在客户端遇到此“用户名或密码错误”异常时,vCenter Server上在INFO级别上就会有一个相应的事件日志,上面写着“用户无法登录,因为用户已经登录”。 该事件日志是一个足够好的提示,可以让您对可能发生的事情有所了解。

根据该提示,我可以形成的理论是,对于传入的(登录)请求,vCenter Server端会注意到该请求上的某些内容,从而给人一种用户已经登录的印象。考虑到我使用Java EE技术的背景,立即想到的明显的事情是,请求被附加了一个“ Cookie”,服务器端使用它来将请求与特定会话相关联。 因为我可以访问发出此登录请求的客户端代码,所以我绝对确定该请求没有任何显式设置的Cookie标头。 这就提出了一个问题,cookie与谁/请求相关联。 如果这不是我们发出的请求的一部分,那么唯一可能发生的地方是HTTP客户端库内。 阅读Apache HTTP客户端库的文档,证实了以下理论:HTTP客户端已自动将(先前生成的)Cookie与请求相关联。

更具体地说,HTTP客户端库使用池连接。 发出请求时,将使用其中一个池化连接(如果有)。 在此特定情况下发生的是,先前的登录将获取连接C1,并且登录将成功。 从vCenter返回的针对该登录请求的响应将在响应标头中包含一个Cookie集。 然后,Apache HTTP客户端库针对使用的连接跟踪此Cookie。 现在,当后续登录请求到达时,如果相同的池连接C1用于此请求,则HTTP客户端库会将针对该连接C1跟踪的Cookie附加到此新请求。 结果,vCenter Server端最终看到传入的登录请求具有与之关联的Cookie,这表明该请求已经存在一个登录会话。 因此,vCenter事件日志中的该INFO消息。 当然,返回的错误信息不多,实际上有点误导,因为它说用户名/密码不正确。

现在我们知道发生了什么,解决方案非常简单。 Apache HTTP客户端库允许您配置Cookie策略管理。 由于在我们的案例中,我们希望处理针对请求的显式设置Cookie,因此我们决定采用可在HTTP客户端上配置的“ ignoreCookies”策略。 可以在HTTP客户端库文档中找到有关此内容的更多信息(请参阅“ Cookie的手动处理”部分)。 进行此更改后,我们将不再看到此异常。

我找不到任何有关此问题的信息。 我能找到的最接近的是该论坛线程https://sourceforge.net/p/vijava/discussion/826592/thread/91550e2a/ 。 它没有一个确定性的解决方案,但似乎确实存在与用户所遇到的问题相同的问题(将近7年!)

翻译自: https://www.javacodegeeks.com/2018/05/vmware-vijava-the-curious-case-of-incorrect-user-name-or-password-exception.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OFDM系列4】OFDM信号多径信道模型基础知识

多径信道模型(Multipath Channel Scenario) 信道脉冲响应(Channel Impulse Response, CIR) 信道的复基带脉冲响应如下所示 h ( τ ; t ) = ∑ l = 1 L a l ( t

kie-api_KIE-WB / JBPM控制台Ng –配置

kie-api大家好,这是我上一篇文章中有关如何使用jBPM Console的后续文章 。 这篇文章的主要思想是描述为了在您自己的公司中使用jBPM Console NG而需要进行的一些最常见的配置。 但是在讨论技术细节之前,我们将介绍KIE Workbench(KIE-WB&#…

【OFDM系列5】单输入单输出OFDM(SISO-OFDM)多径信道迫零(ZF)和最小均方误差(MMSE)均衡器原理和公式推导

OFDM单输入单输出(SISO)迫零(ZF)均衡器 在去除CP之后,第k个子载波上的信号的FFT给出如下 Y k = H k D k + W k ⋯ ( 1 ) Y_k=H_k D_k+W_k\cdots(1)

如何在Tomcat中设置JNDI数据库连接池-Spring教程示例

在Spring和Tomcat中设置JNDI数据库连接池非常容易。 Tomcat服务器文档提供了有关如何在Tomcat 5、6或7中设置连接池的足够信息。在这里,我们将结合使用Tomcat 7和Spring框架在Tomcat服务器中创建连接池并在Spring中使用JNDI代码访问它们。 在上一篇文章中&#xff0…

win10任务栏透明+变窄+免安装

透明设置 在HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced中新建DWORD32位值TaskbarAcrylicOpacity,设置数值为0 重启资源管理器explorer.exe即可 变窄 下载7Taskbar软件7tt_setup.exe,直接解压,对于本…

java vm_Java VM –提防YoungGen空间

java vm正如您从我们以前的面向性能的文章中可能已经看到的那样,运行良好的JVM是实现最佳应用程序性能和稳定性的最重要目标之一。 这样的健康评估通常仅关注主要收集的频率(避免)或检测内存泄漏的存在。 年轻一代空间或短寿命物体的大小和足…

Java生产监控的阴暗面

自动化的工作流程是在敏捷环境中交付高质量产品的新金标准。 不幸的是,不断变化会带来不断的风险。 输入“可观察性”,这是一种度量,可以从系统的外部输出中推断出系统的内部状态。 知道应用程序如何在生产中运行的能力。 在本节中&#xff…

MATLAB库函数upfirdn(分数倍采样率变换)的C语言实现【姊妹篇2纯C语言实现】

upfirdn原理 yout = upfirdn(xin,h,p,q) upfirdn的功能在MATLAB官方帮助文档中说得很清楚 通过插零实现 p p p倍上采样对上采样之后的信号用给定的 h h h(通常为低通滤波器)进行滤波对滤波结果进行

adf4350配置_配置MySQL以进行ADF开发

adf4350配置大家好。 今天,我将向您展示如何为Oracle ADF开发配置MySQL数据库。 恕我直言,当您将ADF与其他数据库而不是Oracle DB一起使用时,您将无法使用Oracle ADF的全部功能,有时您会发现自己在寻找解决方法,以实现…

模拟调频信号FM解调的matlab和C语言实现【姊妹篇2纯C语言实现】

本文所需的FM已调信号、原始音频、包络检波法解调后的音频、差分相位法解调后的音频,可通过以下链接进行下载。其中,FM已调信号文件较大共有两百多兆,故截取其部分上传,若有需要完整信号的请留言! FM调制解调音频文件.rar 已调信号:采样率为 F s = 5 m H z Fs=5mHz Fs=

如何在Java中使用重复项查找整数数组中的K个缺失数字?

自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字。 在进行编程工作面试之前,您可能已经听说过或看到过此问题,但是面试官通常会使用许多不同…

【自适应盲均衡12】判决引导(DD)+判决反馈(DFE)+双模式切换的盲均衡算法在双绞线基带通信中的应用MATLAB仿真(采用三电平PAM信号模型)

引言 为克服数字基带信号在通过非屏蔽五类双绞线时产生的严重码间干扰( ISI) ,常采用自适应均衡技术来减小码间干扰,大大降低接收端信号的误码率。最小均方误差( LMS) 算法能有效降低码间干扰,但需要训练序列,因此影响传输效率。基于判决引导的最小均方误差( DDLMS) 算法不…

基于同步压缩小波变换(Synchrosqueezed wavelet transforms)的时频分析的MATLAB实现(不使用内置函数wsst)

引言 同步压缩小波变换(Synchrosqueezed wavelet transforms, SST)采用了经验模态分解的设计思路,结合小波变换和reallocation theory构建而成,有明确的数学定义和推导。 EMD算法是一种旨在将它们分解成构建块函数的技术,这些构建块函数是(合理地)少量分量的叠加,这些分量…

垃圾收集算法,垃圾收集器_您正在使用什么垃圾收集器?

垃圾收集算法,垃圾收集器我们的研究实验室正全速前进。 随着最近的资本注入 ,我们只能保证我们不断创新的步伐只会加快。 我们进行的部分研究与GC优化有关。 在处理这个有趣的领域中的问题时,我们认为可以分享一些有关GC算法使用的见解。 为此&#xff…

与时俱进:在JAX-RS API中采用OpenAPI v3.0.0

看到时间流逝真是太恐怖了! OpenAPI规范3.0.0是对Swagger规范的重大修改,大部分已于一年前发布,但是工具赶上了一段时间。 但是,随着Swagger Core 2.0.0的最新正式发布,事情肯定会加速。 为了证明这一点,著…

Cpp类虚成员函数指针的用法

普通类成员函数指针 先定义一个公鸡类Cock,只有一个函数Shout,功能是输出一个字符串。 接着定义函数指针类型PFN_Shout。 main函数中代码PFN_Shout pfn_Shout &Cock::Shout;和void (Cock:: * pfn_Shout)() &Cock::Shout;的功能相同&#xf…

通过引入switch表达式来增强Java switch语句

去年12月下旬,我发布了“ Switch Expressions Coming Java? 从那时起,进行了广泛的讨论,表达了意见分歧,现在就Java的switch表达式的未来达成了共识。 我曾尝试在12月的博客文章中评论与switch表达式有关的一些主要发展…

jclouds_jclouds的命令行界面

jclouds序幕 我使用和为jclouds贡献了一年多的时间。 到目前为止,我已经在很多领域广泛使用了它,尤其是在Fuse生态系统中 。 它的强大之处在于它缺少一件事,该工具可用于管理jclouds也提供访问权限的任何云提供商。 类似于EC2命令之类的工具&…

用于从文件读取/写入字符串的新JDK 11文件方法

我之前的文章主要关注可能会添加到JDK 11中的Files.isSameContent()方法。 JDK-8201276 [“(fs)向文件添加方法以从文件读取字符串或向文件写入字符串”]提到了此新方法,并重点介绍了本文的主题: readString(Path) readString(P…

【数字信号处理】离散傅里叶级数(DFS)

周期信号的DFS 周期信号一定 不存在 离散傅里叶变换,通过引入冲激序列,可以进行表示,使得数学运算更加严谨;但一定存在傅里叶级数! 时域周期==>频域离散 时域离散==>频域周期 时域又离散又周期==>频域又周期又离散 联系序列的傅里叶变换DFT理解即可,只不过复指…