gpt4 book ai didi

java - 配置 WSDD 以匹配 AXIS 中的 WSDL

转载 作者:行者123 更新时间:2023-12-01 13:43:19 24 4
gpt4 key购买 nike

我有 WSDL(我从外部提供商那里得到的)。有这样几行:

  <xsd:complexType name="SalesRequest">
<xsd:all>
<xsd:element name="merchantid" type="xsd:int"/>
<xsd:element name="password" type="xsd:string"/>
...
</xsd:all>
</xsd:complexType>

...
<message name="SalesResponse">
<part name="request" type="tns:SalesResponse"/>
</message>
..
<portType name="InterfacePortType">
<operation name="Sales">
<documentation>some text</documentation>
<input message="tns:SalesRequest"/>
<output message="tns:SalesResponse"/>
</operation>

我已经基于这个 WSDL(使用 JAX-RPC)生成了 Java 类。

然后我创建了 Axis 服务(MyService 实现了 InterfacePortType)。

我准备了 XSDD 文件,将 MyService 部署到 Web 应用程序。

所以,然后我调用我的 MySerive 方法之一并在服务器端响应序列化的那一刻得到这个错误:

意外元素名称:预期=请求,实际=销售返回

这意味着我的 XSDL 和 XSDD 并没有太多其他的东西。 MyService 准备了这样的响应(但计数不通过网络发送):
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope 
...
<SalesReturn href="#id0"/></ns1:SalesResponse><multiRef xmlns:ns2=
...
</soapenv:Envelope>

问题是:我应该用 WSDD 做什么才能拥有 “请求”而不是 '销售退货' 响应来自服务的 XML?

我不知道这在哪里 ' 返回 '后缀来自。

- 我已经做了一些步骤:

我用谷歌搜索,发现 WSDL 中应该有 'schema elementFormDefault="qualified"' 。但是我不能更改 WSDL,因为它是外部的,它是由外部提供商提供给我的。

最佳答案

我找到了解决方案,我使用 生成了 WSDD Axis 工具-maven-插件 , 设置:serverSide 参数为 - 然后它生成 WSDD 文件。

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>axistools-maven-plugin</artifactId>
<executions>
<execution>
<id>wsdl2java-job</id>
<phase>generate-sources</phase>
<goals>
<goal>wsdl2java</goal>
</goals>
<configuration>
<sourceDirectory>
src/main/config/wsdl2java/myfolder
</sourceDirectory>
<outputDirectory>
${generatedSourcesDirectory}
</outputDirectory>
<testCases>false</testCases>
<serverSide>true</serverSide>
<subPackageByFileName> false
</subPackageByFileName>
<packageSpace> my.api
</packageSpace>
</configuration>
</execution>
</plugin>

顺便说一句,当我启动这个插件时,它最终会出现编译异常,但是,尽管如此,它还是会生成 WSDD。

然后,如果查看生成的 WSDD,在我手动制作的 WSDD 中没有一些有趣的行:
<operation name="sales" qname="operNS:Sales" 
xmlns:operNS="urn:Interface"
returnQName="request"
returnType="rtns:SalesResponse"
xmlns:rtns="urn:Interface" soapAction="urn:Interface#Sales" >
<parameter qname="in" type="tns:SalesRequest" xmlns:tns="urn:Interface"/>
</operation>

本部分: returnQName="请求"

它还生成“typeMapping”标签(但我使用了beanMapping)

所以,一旦我把这个更改放到我的文件中,我就一切正常了。

实际上,最初为了生成我的初始源,我使用了另一个插件:maven-antrun-plugin

但是没有生成 WSDD 的选项。

关于java - 配置 WSDD 以匹配 AXIS 中的 WSDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12629624/

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