SOAP 网络服务应用程序初始化失败,协议不受支持:https'

SOAP webservice app init fails with Unsupported protocol: https'

我有一个仅支持 SOAP Web 服务后端的应用程序,自 3 月 30 日以来无法启动(部署)并出现错误 //Unsupported protocol: https'//(包括 https 旁边的单引号),未进行任何代码更改因为一年左右,其他系统 URL 的 none 在应用程序代码或 属性 文件中配置,而不是 XSD 中的 xlmns 名称空间 uri。我在应用程序部署(初始化)期间收到该错误,甚至在测试应用程序中的任何 Web 服务之前。

我在 weblogic 10.3.6 服务器上 JDK 1.6.0.45。 (抱歉,我知道我需要升级到更新版本,我保证我最终会到达那里)

完整的堆栈跟踪如下,我确实在 weblogic 启动期间启用了 ssl 调试日志,但我没有看到任何会传达丢失证书的错误。

<Apr 5, 2022 2:31:49 PM IST> <Warning> <HTTP> <BEA-101162> <User defined listener org.springframework.web.context.ContextLoaderListener failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection#0': Invocation of init method failed; nested exception is org.springframework.xml.xsd.commons.CommonsXsdSchemaException: Schema [ServletContext resource [/WEB-INF/xsd/AcmeAppGateway.xsd]] could not be loaded; nested exception is org.apache.ws.commons.schema.XmlSchemaException: Unsupported protocol: https'.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection#0': Invocation of init method failed; nested exception is org.springframework.xml.xsd.commons.CommonsXsdSchemaException: Schema [ServletContext resource [/WEB-INF/xsd/AcmeAppGateway.xsd]] could not be loaded; nested exception is org.apache.ws.commons.schema.XmlSchemaException: Unsupported protocol: https'
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getObject(AbstractBeanFactory.java:296)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
        Truncated. see log file for complete stacktrace
Caused By: org.springframework.xml.xsd.commons.CommonsXsdSchemaException: Schema [ServletContext resource [/WEB-INF/xsd/AcmeAppGateway.xsd]] could not be loaded; nested exception is org.apache.ws.commons.schema.XmlSchemaException: Unsupported protocol: https'
        at org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection.afterPropertiesSet(CommonsXsdSchemaCollection.java:147)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
        Truncated. see log file for complete stacktrace
Caused By: org.apache.ws.commons.schema.XmlSchemaException: Unsupported protocol: https'
        at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:710)
        at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:706)
        at org.apache.ws.commons.schema.SchemaBuilder.handleImport(SchemaBuilder.java:538)
        at org.apache.ws.commons.schema.SchemaBuilder.handleSchemaElementChild(SchemaBuilder.java:1513)
        at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:658)
        Truncated. see log file for complete stacktrace
Caused By: java.net.ProtocolException: Unsupported protocol: https'
        at weblogic.net.http.HttpClient.openServer(HttpClient.java:384)
        at weblogic.net.http.HttpClient.New(HttpClient.java:252)
        at weblogic.net.http.HttpURLConnection.connect(HttpURLConnection.java:213)
        at weblogic.net.http.HttpURLConnection.followRedirect(HttpURLConnection.java:698)
        at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:464)
        Truncated. see log file for complete stacktrace
>

错误中提到的 xsd 具有如下所示的 xlmns URI,这些是否可能是由于使用更高的 TLS 版本(JDK 1.6 不支持的 TLS 1.2)导致的问题?

xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"

xsd里面除了上面没有配置其他的URL。我遇到了另一个类似的错误 here,但那是由于缺少证书。如果有人能指出正确的方向,我将不胜感激。

好吧,经过反复试验,终于弄明白是什么问题了。

在我们的 SOAP WS 项目中,我们将 schemaLocation 设置如下:

我相信*这个网站 schemas.xmlsoap.org 已经在 3 月 30 日开启了 TLS1.2(*我对其他原因持开放态度,但这是我目前的假设) 这就是为什么我们的应用程序在那天之前工作正常并在那天开始失败 post 的原因。我在 SSLABS 上验证了那个 URL 的 TLS 配置,它说该站点禁用了低于 TLS1.2 的任何内容。

由于我仍然使用 JDK 1.6,因此无法连接到此站点,该站点的 TLS 高于 1.6 支持的站点,这就是应用程序初始化在建立连接时失败的原因url。解决方案是手动将 soap 编码的 xml 内容从 URL 下载到 xml 文件并将此文件放在项目文件夹中,然后在 [=37] 中引用此文件=] 对于 schemaLocation,如下所示。这成功了!!