0

我需要一个旧软件(不是我开发的)来测试旧设备。设备通过网络服务与服务器“对话”。这些 web 服务是由轴自动生成的(轴接受一个类并从它的方法中创建 web 服务)。

问题是:设备被开发为读取这样的 xml:

<ns:getReferenceCurveResponse xmlns:ns="http://services.teste.org" xmlns:ax22="http://data.teste.org/xsd" xmlns:ax23="http://util.java/xsd">  
<ns:return type="org.teste.ReferenceCurve">  
<ax21:createdOn>2012-08-16 17:00:59.0</ax21:createdOn>  
<ax21:endPoint>9.2</ax21:endPoint>  
<ax21:fiberId>21</ax21:fiberId>  
<ax21:id>42</ax21:id>  

现在网络服务是这样的:

<ns:getReferenceCurveResponse xmlns:ns="http://services.teste.org" xmlns:ax22="http://data.teste.org/xsd" xmlns:ax23="http://util.java/xsd">  
<ns:return type="org.teste.ReferenceCurve">  
<ax22:createdOn>2012-08-16 17:00:59.0</ax22:createdOn>  
<ax22:endPoint>9.2</ax22:endPoint>  
<ax22:fiberId>21</ax22:fiberId>  
<ax22:id>42</ax22:id>  

正如您所注意到的,命名空间中的前缀已从 ax21 更改为 ax22,这会产生错误,因为设备被编码为前缀 ax21。

我已经挖了一个解决方案,但找不到。我已经重新编译了服务器端,也没有成功。我找不到任何地方可以更改此命名空间前缀,因为它是由 Axis2 自动生成的

4

2 回答 2

1

好吧,它已经徘徊了一天,所以我会用绝对错误的方式来处理这个问题,因为码头是这里的标签之一

您可以使用 servlet 过滤器并即时调整响应以修复该名称空间问题....但这将是糟糕的糟糕:)

祝你好运!

于 2012-08-18T13:21:29.500 回答
0

我找不到任何东西来解决这个问题。

由于它用于本地测试(服务器端已启动并在客户端中运行)并且由于此更改只会影响服务器端,因此我设法将命名空间前缀“ax22”更改为“ns”

您可以通过将此标记添加到 services.xml 来做到这一点:

<schema schemaNamespace="http://your.package.inverted/xsd"/>

就像,如果你有 com.google.something 包,它应该是这样的:

<schema schemaNamespace="http://something.google.com/xsd"/>
于 2012-08-20T12:50:18.490 回答