wsimport生成wsdl代码

wsimport生成wsdl代码

  • 1. webservice接口wsdl生成代码示例
  • 2. 打开以上链接,右键查看网页源代码
  • 3. 替换复制中的部分内容
  • 4. 将以下内容保存为xsd.xjb文件
  • 5. 将以下内容保存为jaxp.properties文件
  • 6. 在命令行中执行以下命令生成java代码

1. webservice接口wsdl生成代码示例

以天气接口为例天气wsdl链接

2. 打开以上链接,右键查看网页源代码

将内容复制保存到本地,并命名为weather.wsdl
wsimport生成wsdl代码_第1张图片

3. 替换复制中的部分内容

<s:element ref="s:schema" />

替换为

<s:any minOccurs="2" maxOccurs="2"/>

如不替换,用wsimport工具会报以下错误
src-resolve.4.2: 解析组件 ‘s:schema’ 时出错。在该组件中检测到 ‘s:schema’ 位于名称空间 ‘http://www.w3.org/2001/XMLSchema’ 中,
wsimport生成wsdl代码_第2张图片

4. 将以下内容保存为xsd.xjb文件


<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
          version="2.0">
 
  <globalBindings>
    <xjc:simple />
  globalBindings>
 
  <bindings scd="~xsd:complexType">
    <class name="ComplexTypeType"/>
  bindings>
 
  <bindings scd="~xsd:simpleType">
    <class name="SimpleTypeType"/>
  bindings>
 
  <bindings scd="~xsd:group">
    <class name="GroupType"/>
  bindings>
 
  <bindings scd="~xsd:attributeGroup">
    <class name="AttributeGroupType"/>
  bindings>
 
  <bindings scd="~xsd:element">
    <class name="ElementType"/>
  bindings>
 
  <bindings scd="~xsd:attribute">
    <class name="attributeType"/>
  bindings>
bindings>

此步骤的目的是为了解决如下错误
属性 “Any” 已定义。请使用 解决此冲突wsimport生成wsdl代码_第3张图片

5. 将以下内容保存为jaxp.properties文件

javax.xml.accessExternalSchema=all
javax.xml.accessExternalDTD=all

将文件保存在D:\jdk1.8.0_xxx\jre\lib文件下(路径修改为自己的路径

该步骤是为解决下面错误

[ERROR] 外部 DTD: 无法读取外部 DTD ‘XMLSchema.dtd’, 因为 accessExternalDTD 属性设置的限制导致不允许 ‘http’ 访问。
http://www.w3.org/2001/XMLSchema.xsd的第 67 行

org.xml.sax.SAXParseException; systemId: http://www.w3.org/2001/XMLSchema.xsd; lineNumber: 67; columnNumber: 11; 外部 DTD: 无法读取外部 DTD ‘XMLSchema.dtd’, 因为 accessExternalDTD 属性设置的限制导致不允许 ‘http’ 访问。
wsimport生成wsdl代码_第4张图片

6. 在命令行中执行以下命令生成java代码

wsimport -extension -encoding utf-8 -keep -d D:\temp\d -s D:\temp\s  -b http://www.w3.org/2001/XMLSchema.xsd -b xsd.xjb -verbose weather.wsdl
-d 生成的源码的目录
-s 生成的class文件的目录

生成代码过程
wsimport生成wsdl代码_第5张图片

你可能感兴趣的:(xml)