【问题标题】:Microsoft webservice and CXF client: JAXB fails to understand "s:schema"Microsoft webservice 和 CXF 客户端:JAXB 无法理解“s:schema”
【发布时间】:2011-08-22 13:58:02
【问题描述】:

我有普通的 Microsoft webservice 和最新版本的普通 CXF,带有 Java/JDK 1.6、Eclipse 等。当我运行 wsdl2java 时,JAXB 部分会抛出错误 "由 JAXB 抛出:未定义的元素声明 's:schema'"

导致它的 WSDL 部分如下所示:

<s:element name="GetDepartmentsResponse">
 <s:complexType>
  <s:sequence>
   <s:element minOccurs="0" maxOccurs="1" name="GetDepartmentsResult">
    <s:complexType>
     <s:sequence>
      <s:element ref="s:schema" /> 
      <s:any /> 
     </s:sequence>
    </s:complexType>
   </s:element>
  </s:sequence>
 </s:complexType>
</s:element>

我可以简单地删除 &lt;s:element ref="s:schema" /&gt; 无处不在并保持 &lt;s:any/&gt; ?它看起来像是 JavaMicrosoft webservices 互操作性的常见障碍。但我找不到任何 CXF 的解决方法。

【问题讨论】:

    标签: web-services wsdl xsd cxf wsdl2java


    【解决方案1】:

    通常您可以删除架构参考。您可能需要将 &lt;s:any&gt; 更改为 &lt;s:any maxOccurs="2"&gt; 或类似名称,以确保架构元素及其后的任何内容都有空间。

    【讨论】:

      【解决方案2】:

      就个人而言,我不建议修改您的 WSDL。 WSDL 定义了服务强加的契约,它并不是你应该在你的客户端中改变的东西。如果您在这里查看答案https://stackoverflow.com/a/19126124/1732319,它描述了如何让wsdl2java 正确处理s:schema

      我在我的项目中使用了 CXF codegen maven 插件,并且有以下配置:

      <configuration>
          <fork>once</fork>
          <additionalJvmArgs>-Djavax.xml.accessExternalDTD=all -Djavax.xml.accessExternalSchema=all</additionalJvmArgs>
          <sourceRoot>${project.build.directory}/generated-sources</sourceRoot>
          <wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot>
          <defaultOptions>
              <bindingFiles>
                  <bindingFile>http://www.w3.org/2001/XMLSchema.xsd</bindingFile>
                  <bindingFile>${basedir}/src/main/resources/customisation.xjb</bindingFile>
              </bindingFiles>
          </defaultOptions>
      </configuration>
      

      customisation.xjb 取自我上面引用的答案。

      【讨论】:

      • 在我的情况下,它可以在没有 customisation.xjb 文件并以离线方式使用 XMLSchema.xsd 的情况下工作。
      猜你喜欢
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 2012-03-30
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多