wsdl 架构命名空间前缀在不同环境中发生变化 - AXIS2

问题描述 投票:0回答:1

我最近在 Open Nebula 中部署了一个具有 SOAP Web 服务的组件。部署后,我们注意到 WSDL 响应具有不同的命名空间前缀

问题:AlertBot 期望看到

<ax25:response>TEST</ax25:response>
但是,它开始看到
<ax21:response>TEST</ax21:response>
代替。我们比较了新旧主机之间的构建,发现配置文件或 java 包没有差异。

我们需要弄清楚为什么 ax25 部分命名空间前缀在新主机上更改为 ax21

注意:我们使用 AXIS2 库来生成 WSDL

wsdl apache-axis xml-namespaces wsdl2java java2wsdl
1个回答
0
投票

我们搬到新环境后也遇到了这个问题。

对我们来说这是新的操作系统和新的 JVM。

深入了解 axis2 源代码后,我们开始了

kernel/src/org/apache/axis2/deployment/RepositoryListener.java

方法:

protected void findServicesInDirectory(File root)

这里我们一步步调试发现生成的命名空间前缀的顺序依赖于

java.io.File.listFiles()
的顺序。

这就是我们的订单发生变化的原因。因为:

不保证结果数组中的名称字符串将以任何特定顺序出现;特别是,不保证它们按字母顺序出现。

java api 文档

希望这有助于理解“为什么”。

© www.soinside.com 2019 - 2024. All rights reserved.