当前位置: 首页 > 知识库问答 >
问题:

在wsimport中使用JAXB插曲文件

廖永长
2023-03-14

有两个WSDL,它们共享一些用于定义数据类型的模式。下面是其中一个WSDL的示例:

<wsdl:definitions
    name="FooService"
    targetNamespace="http://xmlns.my.org/services/FooService/v001"
    xmlns:srv="http://xmlns.my.org/services/FooService/v001"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:fault="java:org.my.exception"
    ...
>
    <wsdl:types>
        <xsd:schema>
            <xsd:import namespace="java:org.my.exception" schemaLocation="../xsd/common/BusinessException.xsd"/>
            <xsd:import namespace="http://xmlns.my.org/services/FooServiceMessages/v001" schemaLocation="../xsd/fooservice/FooServiceMessages_v001.xsd"/>
        </xsd:schema>
    </wsdl:types>
    ...
    <wsdl:message name="BusinessException">
        <wsdl:part element="fault:BusinessException" name="BusinessException"/>
    </wsdl:message>
    ...
    <wsdl:portType name="IFooService">
        <wsdl:operation name="getItems">
            ...
            <wsdl:fault message="srv:BusinessException" name="BusinessException"/>
        </wsdl:operation>
        ...
    </wsdl:portType>
    ...
</wsdl:definitions>

BusinessException.xsd是常见的方案之一。

<bindings version="2.1" xmlns="http://java.sun.com/xml/ns/jaxb">
  <bindings scd="x-schema::tns" xmlns:tns="java:org.my.exception">
    <schemaBindings map="false">
      <package name="org.my.integration.dto.common"/>
    </schemaBindings>
    <bindings scd="~tns:BusinessException">
      <class ref="org.my.integration.dto.common.BusinessException"/>
    </bindings>
  </bindings>
  <bindings scd="x-schema::tns" xmlns:tns="http://xmlns.my.org/BaseIdentifiers/v001">
    <schemaBindings map="false">
      <package name="org.my.integration.dto.common"/>
    </schemaBindings>
    <bindings scd="~tns:EntityIdentifierListType">
      <class ref="org.my.integration.dto.common.EntityIdentifierListType"/>
    </bindings>
    <bindings scd="~tns:...">
      <class ref="..."/>
    </bindings>
    ...
  </bindings>
</bindings>
wsimport -B-XautoNameResolution -Xnocompile -s ./../java/ -verbose -b ./bindings/fooservice/jaxws-bindings.xml -b ./bindings/fooservice/jaxb-bindings.xml -b ./bindings/common/common.episode -keep ./wsdl/FooService_v001.wsdl
[ERROR] Schema descriptor {java:org.my.exception}BusinessException in message part "BusinessException" is not defined and could not be bound to Java. ...

是否有一种方法可以将插曲文件与wsimport一起用于直接导入WSDL中的方案(就像在我的例子中businessexception.xsd)?

共有1个答案

罗绪
2023-03-14

看起来这是wsimport的某种bug或不正确行为。Apache CXF中的wsdl2java工具缺少这个问题。

 类似资料:
  • 我认为使用插曲有一些问题(它们不包括简单类型?)和注释?有解决这个问题的办法吗?我在网上找不到很多关于这个问题的东西。感谢你的提示。

  • 当目标WSDL/XSDS放在某些特定路径下时,wsimport和xjc命令(都是作为Java JDK的一部分下载的)将忽略提供的jaxb绑定文件。

  • 问题内容: 用例: 想要将自定义注释插入由JAXB生成的Java类中的字段 问题: 使用Annotate插件+ JAXB [1],能够成功插入自定义注释,但是它们是通过getter方法而非字段插入的。Morphia(mongo DB)批注(我实际上要插入)批注只能批注java字段[2]。 我的测试XSD: 我的测试绑定xjb: 我生成的Java代码段: 如您所见,我要注释“栏”字段。请指教。如有需

  • 曲线概述 在“曲线”调整中,可以调整图像的整个色调范围内的点。最初,图像的色调在图形上表现为一条直的对角线。在调整 RGB 图像时,图形右上角区域代表高光,左下角区域代表阴影。图形的水平轴表示输入色阶(初始图像值);垂直轴表示输出色阶(调整后的新值)。在向线条添加控制点并移动它们时,曲线的形状会发生更改,反映出图像调整。曲线中较陡的部分表示对比度较高的区域;曲线中较平的部分表示对比度较低的区域。

  • 我正在使用JAXB操作XML文件中的数据,并将这些值插入到数据库中。我有一个从特定的XML标记中提取数据的问题。这个XML标记包含字母数字值,但大约95%(如果不是99%)的时候,它包含的值是整数。因此,我将这些值视为。 提取这些引用的值会删除前导零,从而将作为结果值。我不明白为什么。我觉得JAXB将这些值视为整数。 我怎样才能得到正确的价值呢? 编辑: 下面是相应的POJO@XMLAccesso

  • 回调函数的后序发展 在第六部分我们认识到这样一个情况:回调是Twisted异步编程中的基础。除了与reactor交互外,回调可以安插在任何我们写的Twisted结构内。因此在使用Twisted或其它基于reactor的异步编程体系时,都意味需要将我们的代码组织成一系列由reactor循环可以激活的回调函数链。 即使一个简单的get_poetry函数都需要回调,两个回调函数中一个用于处理正常结果而另