我的目录中没有使用 xjc 或诸如氧气和 eclipse xml 插件之类的工具的问题,但似乎找不到与 wsimport 命令一起使用的风格。
使用命名空间进行解析,以下条目适用于 xjc,但不适用于 wsimport。
<public publicId="http://schemas.ticomgeo.com/2010/geonet/common/ServiceMessageTypes/v0" uri="./MessageTypes/ServiceMessageTypes.xsd"/>
这是我发出的命令
xjc /data/catalog.work/wsdefs/HSTypes/HealthAndStatusV1.xsd -catalog /data/catalog.work/wsdefs/catalog3.xml
wsimport -verbose /data/catalog.work/wsdefs/HealthAndStatusServiceV1.wsdl -catalog /data/catalog.work/wsdefs/catalog5.xml
我在 wsimport 中得到的错误表明它没有映射架构位置。它只查找相对于目录或 wsdl 主目录的它(它们是相同的)。
[错误] /data/catalog.work/wsdefs/ServiceMessageTypes.xsd(没有这样的文件或目录)
这是 wsdl 中的导入语句
<xs:schema>
<xs:import
namespace="http://schemas.ticomgeo.com/2010/geonet/common/ServiceMessageTypes/v0"
schemaLocation="ServiceMessageTypes.xsd"/>
</xs:schema>
再次使用目录文件中的以下条目处理适用于 xjc
<systemSuffix systemIdSuffix="ServiceMessageTypes.xsd" uri="./MessageTypes/ServiceMessageTypes.xsd"/>
但是,使用 wsimport 我在每个元素上都会收到类似于以下内容的错误。第一个错误行号是指endpointStatusEnumType 之后元素开始的行号,第二个错误行号是指EndpointStatusEnumType 元素的开始。请注意,它正在解析文件位置以获取架构。
[错误] 'EndpointStatusEnumType' 已在文件的第 38 行定义:/data/catalog.work/wsdefs/MessageTypes/ServiceMessageTypes.xsd
[错误](与上述错误相关)第一个定义出现在文件的第 23 行:/data/catalog.work/wsdefs/MessageTypes/ServiceMessageTypes.xsd
23 <xs:simpleType name="EndpointStatusEnumType"> Web 服务端点的当前状态。>
</xs:annotation> <xs:restriction base="xs:string"> <xs:enumeration value="NORMAL"/> <xs:enumeration value="COMMS_ERROR"/> <xs:enumeration value="DISABLED"/> </xs:restriction> </xs:simpleType> <!-- Complex Types --> <!-- -->
38 <xs:complexType name="HeaderType">"
除了与 xjc 一起使用外,这两种格式还可以与 OXYGEN 和 Eclipse XML 编辑器和验证器一起使用。
我假设 wsimport 调用与 xjc 相同的代码,所以我猜测在将模式导入 wsdl 文件的方式中存在一些问题,但这是一个非常简单的问题,或者是我正在使用的 wsimport 版本中的错误。
wsimport -版本 JAX-WS RI 2.1.6 在 JDK 6
xjc 版本“JDK 6 中的 JAXB 2.1.10”用于 XML 绑定 (JAXB) 参考实现的 JavaTM 架构,(在 JDK 6 中构建 JAXB 2.1.10)
有人对如何让目录与 wsimport 一起工作有建议吗?