Wildfly 10 JBossWS SOAP地址重写为wsdl-uri-scheme = https,用于反向代理后面的WSDL引用的嵌套XML模式文档(XSD)

时间:2017-11-27 11:46:48

标签: wsdl reverse-proxy url-scheme wildfly-10 jbossws

注意:来自developer.jboss.org

的交叉发布

我们在NGINX后面配置Wildfly 10作为反向代理,用于处理Web服务的SSL要求。 Wildfly作为普通HTTP提供服务,NGINX处理请求的HTTPS端。

我们已使用standalone.xml

中的以下设置启用了JBossWS内的uri重写
<subsystem xmlns="urn:jboss:domain:webservices:2.0">  
    <modify-wsdl-address>true</modify-wsdl-address>  
    <wsdl-host>jbossws.undefined.host</wsdl-host>  
    <wsdl-secure-port>8081</wsdl-secure-port>  
    <wsdl-uri-scheme>https</wsdl-uri-scheme>  

端点还使用自定义部署描述符:jboss-webservices.xml

<jboss:port-component>  
  <jboss:ejb-name>ClaimWebServiceBean</jboss:ejb-name>  
  <jboss:port-component-name>ClaimWSPort</jboss:port-component-name>  
  <jboss:port-component-uri>Claim</jboss:port-component-uri>  
  <jboss:transport-guarantee>CONFIDENTIAL</jboss:transport-guarantee>  
</jboss:port-component> 

SOAP地址的URI重写和WSDL中包含的XSD的模式位置正常工作

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"   
  xmlns:tns="http://example.systems/webservices/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"   
  xmlns:ns1="http://example.co.za/claim/zmf" attributeFormDefault="unqualified" elementFormDefault="unqualified"   
  targetNamespace="http://example.systems/webservices/">  

  <xs:import namespace="http://example.co.za/claim/zmf" schemaLocation="https://dev.example.ws:8081/webservices/Claim?xsd=ZietoClaim_2_1.xsd"/>  
  <!-- xml omitted -->        

  <wsdl:service name="ClaimService">  
    <wsdl:port binding="tns:ClaimServiceSoapBinding" name="ClaimWSPort">  
      <soap12:address location="https://dev.example.ws:8081/webservices/Claim"/>  
    </wsdl:port>  
  </wsdl:service> 

WSDL中引用的XSD包含2个以上的import语句,可以导入2个以上的XSD&#39。然而,这是问题的开始。在下面的摘录中,您会注意到架构位置使用 http 而非 https 用于其他2个XSD。

使用curl下载上面引用的XSD给出了这个内容,它显示了问题:

<?xml version='1.0' encoding='UTF-8'?>  
<xsd:schema xmlns:zdt="http://example.co.za/claim/zmf/datatypes" xmlns:zcdt="http://example.co.za/common/datatypes"   
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://example.co.za/claim/zmf" elementFormDefault="qualified"   
  targetNamespace="http://example.co.za/claim/zmf">  

  <xsd:import namespace="http://example.co.za/claim/zmf/datatypes" schemaLocation="http://dev.example.ws:8081/webservices/Claim?xsd=zmf_dt_2_1.xsd"/>  
  <xsd:import namespace="http://example.co.za/common/datatypes" schemaLocation="http://dev.example.ws:8081/webservices/Claim?xsd=zdt_1_2.xsd"/>  

有没有办法配置JBossWS来重写第一个XSD内的shema位置以及使用 https

0 个答案:

没有答案