【问题标题】:wsimport forgets one proxy classwsimport 忘记了一个代理类
【发布时间】:2011-09-04 12:07:09
【问题描述】:

我使用 wsimport 从 WSDL 文件生成代理类。生成了 A 类,但对应于其构造函数的 A 参数的 B 类 - 不是。 这可能是什么原因?谢谢。

这是 WSDL:

<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.4-b01-. --><!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.4-b01-. --><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://project-project.org/ref" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://project-project.org/ref" name="MyName">
<types>
<xsd:schema>
<xsd:import namespace="http://purl.org/dc/terms/" schemaLocation="http://X.X.X.X:8080/myName/MyName?xsd=1" />
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://project-project.org/ref/tools" schemaLocation="http://X.X.X.X:8080/myName/MyName?xsd=2" />
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://project-project.org/ref/datatypes" schemaLocation="http://X.X.X.X:8080/myName/MyName?xsd=3" />
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://project-project.org/ref/ProjectService" schemaLocation="http://X.X.X.X:8080/myName/MyName?xsd=4" />
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://project-project.org/ref/MyName" schemaLocation="http://X.X.X.X:8080/myName/MyName?xsd=5" />
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://project-project.org/ref" schemaLocation="http://X.X.X.X:8080/myName/MyName?xsd=6" />
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://project-project.org/objects" schemaLocation="http://X.X.X.X:8080/myName/MyName?xsd=7" />
</xsd:schema>
</types>
<message name="MyName">
<part name="parameters" element="tns:MyName" />
</message>
<message name="MyNameResponse">
<part name="parameters" element="tns:MyNameResponse" />
</message>
<message name="ProjectServicePull">
<part name="parameters" element="tns:ProjectServicePull" />
</message>
<message name="ProjectServicePullResponse">
<part name="parameters" element="tns:ProjectServicePullResponse" />
</message>
<portType name="MyName">
<operation name="MyName">
<input message="tns:MyName" />
<output message="tns:MyNameResponse" />
</operation>
<operation name="ProjectServicePull">
<input message="tns:ProjectServicePull" />
<output message="tns:ProjectServicePullResponse" />
</operation>
</portType>
<binding name="MyNamePortBinding" type="tns:MyName">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<operation name="MyName">
<soap:operation soapAction="http://project-project.org/ref/MyName" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="ProjectServicePull">
<soap:operation soapAction="http://project-project.org/ref/ProjectService/Pull" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="MyName">
<port name="MyNamePort" binding="tns:MyNamePortBinding">
<soap:address location="http://X.X.X.X:8080/myName/MyName" />
</port>
</service>

【问题讨论】:

  • 您必须更具体。 WSDL 中不存在构造函数,因此生成的 Java 类也不能有与默认构造函数不同的构造函数。您是否使用 JAX-WS 来生成 WSDL?您能否提取或创建一个 WSDL sn-p 来演示您的问题?
  • 感谢您的回答。 “所以生成的 Java 类不能有一个与默认构造函数不同的类” 这有点问题。我该怎么做才能使其以其他类的形式导入其他构造函数及其依赖项? PS。我明白了,我会在今天晚些时候发布 wsdl。
  • 这没有帮助。它们的类型包含在链接的模式文件中。不过,这并没有改变任何东西。您不能使用 wsimport 创建特定的构造函数。 XML Schema 仅与数据有关。
  • 感谢您抽出宝贵时间回答。像我这样的情况通常会怎么做?
  • 看看stackoverflow.com/questions/4155361/… 在您的情况下,唯一的选择是重构您的代码并创建非参数构造函数以满足要求。

标签: java web-services proxy-classes wsimport


【解决方案1】:

可能是您的 B 类架构不完整,因此 jaxb 无法成功创建该类。如果我理解正确,您是说生成的 A 类 由于缺少类而在生成后不会编译? wsimport 会吐出任何警告吗?

【讨论】:

  • 没有警告。它创建代理类 A 但具有默认构造函数。没有创建接受参数的构造函数,尽管它存在于代码中的服务器端。我需要它以及它所依赖的任何东西。
  • @azerIO - 您是在尝试创建 Web 服务客户端还是服务器?
  • @azerIO - 我只是想确定一下,因为您的 cmets 令人困惑。服务器上类的外观与客户端工件的外观无关。
猜你喜欢
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 2018-09-20
  • 1970-01-01
  • 2022-06-25
  • 1970-01-01
相关资源
最近更新 更多