我正在使用Swagger生成的客户端从Liberty上运行的Web应用程序内调用REST服务。连接使用SSL,但由于找不到证书而失败。
我打开调试开关,发现该调用访问JRE信任库,而不访问class Parent(object): #This is a Borg class
__shared_state = {}
def __init__(self):
self.__dict__ = self.__shared_state
self.valueA = 5
class Child(Parent):
def __init__(self):
Parent.__init__(self)
self.valueB = 10
def Calculate(self):
self.result = self.valueB + self.valueA
print(self.result)
class MainProgram():
def __init__(self):
self.parent = Parent()
self.child = Child()
self.parent.valueA = 8
self.child.Calculate()
foobar=MainProgram()
中的Liberty信任库。
更让我感到困惑的是,同一个Web应用程序调用了SAP Web服务(SOAP),它也需要SSL。这些工作正常。
为什么SOAP服务找不到证书,但是REST调用在错误的位置?
更新
这个问题似乎与之相关:HttpsUrlConnection using KeyStore instead of TrustStore with WebSphere Liberty Profile,但我无法解释为什么SOAP调用不使用Liberty信任库而使用REST。
更新
我现在怀疑swagger:https://github.com/swagger-api/swagger-codegen/issues/6413使用的OkHttp客户端。当前版本是2.7.5。将尝试升级到3.9.0。