本文共 1982 字,大约阅读时间需要 6 分钟。
kubernetes 应用
最近,Opensource.com的抄写员詹姆斯·法雷尔(James Farrell)写了一篇精彩的文章,标题为 。 除了出色的文章外,我真的很喜欢标题,我确信那些意外的短语之一给很多面Kong带来了微笑。
最近,我自己经历了一次奇怪但积极的经历,这给我带来了类似的意外标签。 我一直在解决一个棘手的问题,该问题是在升级一些服务器和网络基础结构时出现的,这些问题破坏了自2000年代以来一直支持的Java应用程序。 奇怪的是,我在有关Kubernetes的所有文章中找到了非常有帮助的出色文章,找到了解决方案。
事不宜迟,这是我的问题:
我猜想大多数读者会看该消息,并认为诸如“我希望日志文件中有更多信息”或“我很高兴我从未收到过这样的消息”之类的事情。
不幸的是,实际上,日志文件中没有太多信息,而只是相同的消息。 为了调试这一点,我做了三件事:
我在网上搜索了该邮件。 有趣的是,或许糟糕的是,当时只有200个左右的命中此字符串, ,其中包括增加设置
-Djavax.net.debug=ssl:handshake:verbose到运行应用程序的java命令。
我尝试了这个建议,结果产生了很多(好),但大多数输出对我来说还是很模糊的,因为我不是SSL之类的基础知识专家。 但是我确实注意到的一件事是,在所有这些输出中,没有任何有关服务器响应的信息。
所以我搜索了更多。
这个问题的另一个有趣的部分是,当代码由OpenJDK中捆绑的Java命令执行时运行良好,但是当使用的自定义运行时时,此错误失败。 因此,从上面的搜索#1出现的相对数量不大的表面上看起来相似的问题实际上并不相关,因为它们似乎都在处理服务器上不良的SSL证书以及PostgreSQL JDBC检查服务器凭据的能力。
通常,将问题搁置几个小时后,我想到了一个主意-也许我在定制Java运行时中缺少某些模块。 尽管我没有收到任何直接表明该问题的错误,但可以观察到的事实是标准OpenJDK环境在自定义环境失败时仍能正常工作,这似乎暗示了这种可能性。 我在OpenJDK安装的jmods /文件夹中进行了快速浏览 ,但是那里有大约70个模块,没有任何东西让我跳出来。
但是再一次,看起来很奇怪的是,打开了调试功能(请参阅上面的#1),没有迹象表明服务器会接受什么,而客户端通常无法提供什么,很多行是这样的:
Ignoring unavailable cipher suite : TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
因此,到那时我至少在想,也许缺少的是提供那种密码套件的模块。 因此,我开始使用“ jdbc crypto”之类的字符串进行搜索,在此过程中,出现了最不可能的文章: ,由撰写。 在文章的中途,我发现了以下内容:
! 想象一下,就像我的一样,他的脚本正在创建一个自定义Java运行时。 但是他说他需要手动添加模块jdk.crypto.ec以便通过SSL连接到他的PostgreSQL环境。 当然听起来很熟悉。
实际上,这也是解决我的问题的方法。 缺少的模块是jdk.crypto.ec ,我可以将其添加到我的构建中,如下所示:
DEPS = $ ( JAVA_HOME ) / bin / jdeps -- print - module - deps $ ( TEST_HOME ) / MyApp. jar \ $ ( TEST_HOME ) / lib /*.jar,jdk.crypto.ec; $(JAVA_HOME)/bin/jlink --module-path $(W64_JAVA_HOME)/jmods –no-header-files --no-man-pages --compress=2 –strip-debug –add-modules $$DEPS --output $(TEST_HOME)/java-runtime
(我在这里交叉构建Windows Java运行时;有关更多信息, )。
对于像我这样对加密货币不太了解的人来说,这是一个很大的难题。 再者,开放源代码,以及不仅仅如此,与开放源代码一起分享的意愿是巨大的。 哇,使用Kubernetes来修复Java桌面应用程序,那也非常庞大! 再次感谢Juan Medina!
翻译自:
kubernetes 应用
转载地址:http://pnszd.baihongyu.com/