Apache CXF::wsdl2java忽略公共项的目录配置

Apache CXF::wsdl2java忽略公共项的目录配置,java,cxf,wsdl2java,Java,Cxf,Wsdl2java,我使用的是ApacheCxf2.7.6wsdl2java,该工具似乎忽略了公共目录项,或者找不到公共目录项。特别是,我的一个XSD文件中有以下: <xs:import namespace="http://www.ivoa.net/xml/STC/STCcoords/v1.10"/> 它解析文件,但我的理解是,这不应该是必要的,因为我不想编辑提供给我的XSD 无论使用OASIS XML格式还是TR9401格式,行为都是相同的。我从Apache CXF用户邮件列表中得到的答复是,XML

我使用的是ApacheCxf2.7.6
wsdl2java
,该工具似乎忽略了公共目录项,或者找不到公共目录项。特别是,我的一个XSD文件中有以下

<xs:import namespace="http://www.ivoa.net/xml/STC/STCcoords/v1.10"/>
它解析文件,但我的理解是,这不应该是必要的,因为我不想编辑提供给我的XSD

无论使用OASIS XML格式还是TR9401格式,行为都是相同的。

我从Apache CXF用户邮件列表中得到的答复是,XML模式规范将这一点留给实现,因此不被视为bug

线程(帖子日期为2013年9月26日,在第2页,我似乎无法提供直接指向该页的链接)。相关结论如下。我引述:

我的想法是:

1) 根据schema规范,如果schemaLocation提示不是 指定,则由应用程序决定如何解决该问题 如果需要的话。因此,我不认为这是一个“bug”。我们 具体来说,只需使用提供的信息,这是 “编译单元”(aka:wsdl)

2) 就我个人而言,我认为不提供 schemaLocation并强烈建议添加它。这个 我唯一一次看到它没有被指定是在导入模式时 也嵌入在同一wsdl中(因此没有位置)。
当我在规范中看到“符合应用程序”之类的东西时,那就是 我,是一场噩梦。只需指定它

3) 总而言之,根本问题在于XmlSchema的SchemaBuilder 班级。如果没有schemaLocation,则假定它是 它正在处理并继续处理的编译单元。不要试图 解决任何问题。如果你想追求一个补丁或什么,它 大约是SchemaBuilder.java的680。但即使改变了这一点,也可能 需要CXF方面的更多支持来预填充它所使用的名称空间 已经知道如何避免他们把信息传到网上。不 非常肯定

因此,我们确认:

  • Oracle Java 7附带的默认
    wsimport
    工具使用目录解析导入语句,即使没有schemaLocation属性
  • Apache CXF 2.7.6
    wsdl2java
    工具不使用目录来解析没有schemaLocation属性的导入语句
  • ApacheCXF社区并不认为这是一个bug
<public publicId="http://www.ivoa.net/xml/STC/STCcoords/v1.10" uri="STCcoords-v1.10.xsd"/>
<xs:import namespace="http://www.ivoa.net/xml/STC/STCcoords/v1.10" schemaLocation="http://www.ivoa.net/xml/STC/STCcoords/v1.10/>