gpt4 book ai didi

jaxb - 我如何告诉 wsimport 单独的 WSDL 文件引用相同的对象类?

转载 作者:行者123 更新时间:2023-11-30 23:50:01 25 4
gpt4 key购买 nike

我有三个不同的 JAX-WS 服务,它们在服务器上使用相同的类(例如 ServiceAServiceBServiceC ,所有这些都使用 MyCommonClass 作为参数)。我们正在开发的另一个模块是使用 wsimport为这些服务创建客户端,但问题是 wsimport 创建了 MyCommonClass 的单独实例对于每项服务:

  • com.company.servicea.endpoint.MyCommonClass
  • com.company.serviceb.endpoint.MyCommonClass

  • 我知道我可以使用 wsimport -p为每个端点指定一个通用包的选项,但是我想将大多数类保留在单独的包中,但只是为了共享某些通用包。根据我的阅读,听起来 JAXB 绑定(bind)文件可能会有所帮助,但我还没有弄清楚实现所需结果的确切语法。我认为每个服务都需要一个单独的绑定(bind)文件(因为我为每个服务调用一次 wsimport),它看起来像这样:
    <?xml version="1.0" encoding="UTF-8"?>
    <bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.1" xmlns:tns="http://endpoint.servicea.company.com/">
    <bindings node="//xsd:complexType[@name='myCommonClass']">
    <class name="com.company.model.MyCommonClass"/>
    </bindings>
    </bindings>

    我在正确的轨道上吗?或者您有任何替代解决方案吗?

    最佳答案

    在 xsd 中定义您的公共(public)类并将其导入服务 WSDL。
    然后使用模式自定义在这个模式中生成定义到一个单独的包中,比如“com.company.model”

    <jxb:bindings
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    version="1.0">
    <jxb:bindings schemaLocation="model.xsd" node="/xsd:schema">
    <jxb:schemaBindings>
    <jxb:package name="com.company.model"/>
    </jxb:schemaBindings>
    </jxb:bindings>

    ...

    引用: http://jax-ws.java.net/jax-ws-21-ea1/docs/customizations.html#2.6_Class_Customization

    关于jaxb - 我如何告诉 wsimport 单独的 WSDL 文件引用相同的对象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5567853/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com